zoukankan      html  css  js  c++  java
  • Python之PyQt编程

    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/determined/p/11988562.html
Copyright © 2011-2022 走看看