Python之PyQt编程,,1、windows的
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编程
评论关闭