Airuio 2019-12-05
1、windows的建立
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/8/19 10:09 # @Site : # @File : advertisingRunner.py # @Software: PyCharm import sys from ui_class.ui_Elements import * from public_class.common_method import * class MainWindow(QMainWindow): def __init__(self): super(MainWindow,self).__init__() self.initUI() def initUI(self): self.setGeometry(300, 300, 1200, 800) self.setWindowTitle(‘标题‘) self.setWindowIcon(QIcon(‘标题icon.png‘))#icon图片需与当前文件在同级目录下,否则需带入路径 self.statusBar() self.menus() self.show() def menus(self): #菜单 filemenu = mainMenus(self,‘文件‘) #菜单 menuAction(self,filemenu,‘编辑‘,‘Ctrl+E‘) #一级action openmenu = subMenu(filemenu,‘打开‘) #一级menu menuAction(self,openmenu,‘open file‘,‘Ctrl+O‘) #二级action menuAction(self,openmenu,‘open URL‘,‘Ctrl+U‘) subMenu(filemenu,‘新建‘) delmenu = subMenu(filemenu,‘删除‘) menuAction(self,delmenu,‘del file‘,‘Ctrl+D‘) navMenu = mainMenus(self,‘导航‘) menuAction(self,navMenu,"工具",‘Ctrl+T‘) def buttons(self): #按钮 btn = QPushButton(‘Close Button‘, self) btn.move(40,40) btn_boxTip(btn,self,‘点击退出‘) #鼠标悬停浮层提示 btn.setStatusTip(‘点击退出‘) ##设置状态栏信息 self.show() def closeEvent(self, event):#重写closeevent()关闭窗口弹出提示框 reply = QMessageBox.question(self, ‘本程序‘, "是否要退出程序?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if reply == QMessageBox.Yes: event.accept() else: event.ignore() def winRunner(): app = QApplication(sys.argv) window = MainWindow()#实例化窗口 # all_layout(window) wincenter(window) # getExePath() sys.exit(app.exec_()) if __name__ == ‘__main__‘: winRunner()
效果图:
重写关闭提示弹窗,不重写closeEvent()则默认无退出提示弹窗:
2、
以上代码运行main下面注释掉的all_layout(window)则是页面元素整体布局方法
其中包含(各布局方法可嵌套使用)#常用
QGridLayout()网格布局
QVBoxLayout()竖向布局
QHBoxLayout()横向布局示例嵌套:
gridLayout()、hBoxlayout()、vBoxlayout()嵌套于all_layout(window)中
def gridLayout(): #网格布局 lineEdit = QLineEdit()#输入框 lineEdit.setPlaceholderText("网格布局输入框默认显示提示语") lineEdit.text()#获取输入框的值 lable = QLabel()#标签,显示固有文本 # lable.setFixedWidth(50)#设置尺寸 lable.setText("网格布局标签显示文字") button= QPushButton()#按钮,可绑定点击事件 button.setText("网格布局按钮") button.setFixedWidth(180)#设置按钮尺寸 button.clicked.connect(lambda:fileReadWrite2(contract_orderClick()))#可以将有返回值的方法作为参数传递 gridLayout = QGridLayout()#实例化一个虚拟布局画布 gridWidget = QWidget()#实例化一个部件 #装载各控件布局到虚拟布局画布中,参考“.addWidget(控件名,行,列,占用行数,占用列数,对齐方式)”传入对应参数 gridLayout.addWidget(lineEdit,0,1,Qt.AlignTop) gridLayout.addWidget(lable,0,0,Qt.AlignTop) gridLayout.addWidget(button,1,0,1,2,Qt.AlignCenter) #将布局好的虚拟画布装载到部件上,作为返回对象 gridWidget.setLayout(gridLayout) return gridWidget def vBoxlayout(): #box竖向布局 lineEdit = QLineEdit()#输入框 lineEdit.setPlaceholderText("Box竖向布局输入框默认显示提示语") lineEdit.text()#获取输入框的值 lable = QLabel()#标签,显示固有文本 # lable.setFixedWidth(50)#设置尺寸 lable.setText("Box竖向布局标签显示文字") button= QPushButton()#按钮,可绑定点击事件 button.setText("Box竖向布局按钮") button.setFixedWidth(180)#设置按钮尺寸 button.clicked.connect(lambda:fileReadWrite2(contract_orderClick()))#可以将有返回值的方法作为参数传递 vBlayout = QVBoxLayout()#实例化虚拟竖向布局画布 vWidget = QWidget()#实例化部件 #添加控件到虚拟布局画布 vBlayout.addWidget(lable) vBlayout.addWidget(lineEdit) vBlayout.addWidget(button) # 装载虚拟画布到部件中 vWidget.setLayout(vBlayout) return vWidget def hBoxlayout(): #box竖向布局 lineEdit = QLineEdit()#输入框 lineEdit.setPlaceholderText("Box横向布局输入框默认显示提示语") lineEdit.text()#获取输入框的值 lable = QLabel()#标签,显示固有文本 # lable.setFixedWidth(50)#设置尺寸 lable.setText("Box横向布局标签显示文字") button= QPushButton()#按钮,可绑定点击事件 button.setText("Box横向布局按钮") button.setFixedWidth(180)#设置按钮尺寸 button.clicked.connect(lambda:fileReadWrite2(contract_orderClick()))#可以将有返回值的方法作为参数传递 hBlayout = QHBoxLayout()#实例化虚拟竖向布局画布 hWidget = QWidget()#实例化部件 #添加控件到虚拟布局画布 hBlayout.addWidget(lable) hBlayout.addWidget(lineEdit) hBlayout.addWidget(button) # 装载虚拟画布到部件中 hWidget.setLayout(hBlayout) return hWidget def all_layout(window): ############## 全局布局 ############### #grid布局 glb_gridLayout = QGridLayout() glb_gridLayoutExample = gridLayout() glb_vBLayoutExample = vBoxlayout() glb_hBLayoutExample = hBoxlayout()76 glb_gridLayout.addWidget(glb_gridLayoutExample,0,0) glb_gridLayout.addWidget(glb_vBLayoutExample,0,1) glb_gridLayout.addWidget(glb_hBLayoutExample,1,0,1,2,Qt.AlignCenter)#居中展示 glb_Widget = QWidget() glb_Widget.setLayout(glb_gridLayout) # self.setLayout(glb_VLayout) window.setCentralWidget(glb_Widget)#将各部件布局装入窗口中显示
效果图: