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') #一级action
34 openmenu = subMenu(filemenu,'打开') #一级menu
35 menuAction(self,openmenu,'open file','Ctrl+O') #二级action
36 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 gridWidget
22
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 vWidget
45
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 hWidget
68
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)#将各部件布局装入窗口中显示

效果图:

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') #一级action
34 openmenu = subMenu(filemenu,'打开') #一级menu
35 menuAction(self,openmenu,'open file','Ctrl+O') #二级action
36 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 gridWidget
22
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 vWidget
45
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 hWidget
68
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)#将各部件布局装入窗口中显示

效果图:

来源:https://www.cnblogs.com/East-fence/p/12112310.html