Python之PyQt编程,,1、windows的


1、windows的建立

 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Time    : 2019/8/19 10:09 4 # @Site    :  5 # @File    : advertisingRunner.py 6 # @Software: PyCharm 7  8 import sys 9 10 from ui_class.ui_Elements import *11 from public_class.common_method import *12 13 14 class MainWindow(QMainWindow):15 16     def __init__(self):17 18         super(MainWindow,self).__init__()19         self.initUI()20 21     def initUI(self):22 23         self.setGeometry(300, 300, 1200, 800)24         self.setWindowTitle(‘标题‘)25         self.setWindowIcon(QIcon(‘标题icon.png‘))#icon图片需与当前文件在同级目录下,否则需带入路径26         self.statusBar()27         self.menus()28         self.show()29 30     def menus(self):31         #菜单32         filemenu = mainMenus(self,‘文件‘)  #菜单33         menuAction(self,filemenu,‘编辑‘,‘Ctrl+E‘) #一级action34         openmenu = subMenu(filemenu,‘打开‘)  #一级menu35         menuAction(self,openmenu,‘open file‘,‘Ctrl+O‘) #二级action36         menuAction(self,openmenu,‘open URL‘,‘Ctrl+U‘)37 38         subMenu(filemenu,‘新建‘)39         delmenu = subMenu(filemenu,‘删除‘)40         menuAction(self,delmenu,‘del file‘,‘Ctrl+D‘)41 42         navMenu = mainMenus(self,‘导航‘)43         menuAction(self,navMenu,"工具",‘Ctrl+T‘)44 45     def buttons(self):46         #按钮47         btn = QPushButton(‘Close Button‘, self)48         btn.move(40,40)49         btn_boxTip(btn,self,‘点击退出‘)   #鼠标悬停浮层提示50         btn.setStatusTip(‘点击退出‘)     ##设置状态栏信息51         self.show()52 53     def closeEvent(self, event):#重写closeevent()关闭窗口弹出提示框54         reply = QMessageBox.question(self,55                                                ‘本程序‘,56                                                "是否要退出程序?",57                                                QMessageBox.Yes | QMessageBox.No,58                                                QMessageBox.No)59         if reply == QMessageBox.Yes:60             event.accept()61         else:62             event.ignore()63 64 def winRunner():65     app = QApplication(sys.argv)66     window = MainWindow()#实例化窗口67     # all_layout(window)68     wincenter(window)69     # getExePath()70     sys.exit(app.exec_())71 72 if __name__ == ‘__main__‘:73     winRunner()

效果图:

技术图片

重写关闭提示弹窗,不重写closeEvent()则默认无退出提示弹窗:

技术图片

2、

以上代码运行main下面注释掉的all_layout(window)则是页面元素整体布局方法

其中包含(各布局方法可嵌套使用)#常用

QGridLayout()网格布局
QVBoxLayout()竖向布局
QHBoxLayout()横向布局

示例嵌套:
gridLayout()、hBoxlayout()、vBoxlayout()嵌套于all_layout(window)中
 1 def gridLayout(): 2     #网格布局 3     lineEdit = QLineEdit()#输入框 4     lineEdit.setPlaceholderText("网格布局输入框默认显示提示语") 5     lineEdit.text()#获取输入框的值 6     lable = QLabel()#标签,显示固有文本 7     # lable.setFixedWidth(50)#设置尺寸 8     lable.setText("网格布局标签显示文字") 9     button= QPushButton()#按钮,可绑定点击事件10     button.setText("网格布局按钮")11     button.setFixedWidth(180)#设置按钮尺寸12     button.clicked.connect(lambda:fileReadWrite2(contract_orderClick()))#可以将有返回值的方法作为参数传递13     gridLayout = QGridLayout()#实例化一个虚拟布局画布14     gridWidget = QWidget()#实例化一个部件15     #装载各控件布局到虚拟布局画布中,参考“.addWidget(控件名,行,列,占用行数,占用列数,对齐方式)”传入对应参数16     gridLayout.addWidget(lineEdit,0,1,Qt.AlignTop)17     gridLayout.addWidget(lable,0,0,Qt.AlignTop)18     gridLayout.addWidget(button,1,0,1,2,Qt.AlignCenter)19     #将布局好的虚拟画布装载到部件上,作为返回对象20     gridWidget.setLayout(gridLayout)21     return gridWidget22 23 def vBoxlayout():24     #box竖向布局25     lineEdit = QLineEdit()#输入框26     lineEdit.setPlaceholderText("Box竖向布局输入框默认显示提示语")27     lineEdit.text()#获取输入框的值28     lable = QLabel()#标签,显示固有文本29     # lable.setFixedWidth(50)#设置尺寸30     lable.setText("Box竖向布局标签显示文字")31     button= QPushButton()#按钮,可绑定点击事件32     button.setText("Box竖向布局按钮")33     button.setFixedWidth(180)#设置按钮尺寸34     button.clicked.connect(lambda:fileReadWrite2(contract_orderClick()))#可以将有返回值的方法作为参数传递35 36     vBlayout = QVBoxLayout()#实例化虚拟竖向布局画布37     vWidget = QWidget()#实例化部件38     #添加控件到虚拟布局画布39     vBlayout.addWidget(lable)40     vBlayout.addWidget(lineEdit)41     vBlayout.addWidget(button)42     # 装载虚拟画布到部件中43     vWidget.setLayout(vBlayout)44     return vWidget45 46 def hBoxlayout():47     #box竖向布局48     lineEdit = QLineEdit()#输入框49     lineEdit.setPlaceholderText("Box横向布局输入框默认显示提示语")50     lineEdit.text()#获取输入框的值51     lable = QLabel()#标签,显示固有文本52     # lable.setFixedWidth(50)#设置尺寸53     lable.setText("Box横向布局标签显示文字")54     button= QPushButton()#按钮,可绑定点击事件55     button.setText("Box横向布局按钮")56     button.setFixedWidth(180)#设置按钮尺寸57     button.clicked.connect(lambda:fileReadWrite2(contract_orderClick()))#可以将有返回值的方法作为参数传递58 59     hBlayout = QHBoxLayout()#实例化虚拟竖向布局画布60     hWidget = QWidget()#实例化部件61     #添加控件到虚拟布局画布62     hBlayout.addWidget(lable)63     hBlayout.addWidget(lineEdit)64     hBlayout.addWidget(button)65     # 装载虚拟画布到部件中66     hWidget.setLayout(hBlayout)67     return hWidget68 69 def all_layout(window):70 ##############   全局布局   ###############71     #grid布局72     glb_gridLayout = QGridLayout()73     glb_gridLayoutExample = gridLayout()74     glb_vBLayoutExample = vBoxlayout()75     glb_hBLayoutExample = hBoxlayout()
76 glb_gridLayout.addWidget(glb_gridLayoutExample,0,0)77 glb_gridLayout.addWidget(glb_vBLayoutExample,0,1)78 glb_gridLayout.addWidget(glb_hBLayoutExample,1,0,1,2,Qt.AlignCenter)#居中展示79 80 81 glb_Widget = QWidget()82 glb_Widget.setLayout(glb_gridLayout)83 84 # self.setLayout(glb_VLayout)85 window.setCentralWidget(glb_Widget)#将各部件布局装入窗口中显示

效果图:

技术图片

Python之PyQt编程

评论关闭