码迷,mamicode.com
首页 > 编程语言 > 详细

Python之PyQt编程

时间:2019-12-05 13:24:42      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:def   central   idg   message   super   ack   点击   工具   sys   

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)#将各部件布局装入窗口中显示

效果图:

技术图片

 

 

 

 

Python之PyQt编程

标签:def   central   idg   message   super   ack   点击   工具   sys   

原文地址:https://www.cnblogs.com/determined/p/11988562.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!