zoukankan      html  css  js  c++  java
  • pyqt5核心-信号与槽(第二弹)

    果:

     1 from PyQt5 import QtCore, QtGui, QtWidgets
     2 
     3 class Ui_Form(object):
     4     def setupUi(self, Form):
     5         Form.setObjectName("Form")
     6         Form.resize(715, 225)
     7         self.controlsGroup = QtWidgets.QGroupBox(Form)
     8         self.controlsGroup.setGeometry(QtCore.QRect(10, 20, 451, 151))
     9         self.controlsGroup.setObjectName("controlsGroup")
    10         self.widget = QtWidgets.QWidget(self.controlsGroup)
    11         self.widget.setGeometry(QtCore.QRect(10, 40, 411, 30))
    12         self.widget.setObjectName("widget")
    13         self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget)
    14         self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
    15         self.horizontalLayout.setObjectName("horizontalLayout")
    16         self.label = QtWidgets.QLabel(self.widget)
    17         self.label.setObjectName("label")
    18         self.horizontalLayout.addWidget(self.label)
    19         self.numberSpinBox = QtWidgets.QSpinBox(self.widget)
    20         self.numberSpinBox.setObjectName("numberSpinBox")
    21         self.horizontalLayout.addWidget(self.numberSpinBox)
    22         self.styleCombo = QtWidgets.QComboBox(self.widget)
    23         self.styleCombo.setObjectName("styleCombo")
    24         self.styleCombo.addItem("")
    25         self.styleCombo.addItem("")
    26         self.styleCombo.addItem("")
    27         self.horizontalLayout.addWidget(self.styleCombo)
    28         self.label_2 = QtWidgets.QLabel(self.widget)
    29         self.label_2.setObjectName("label_2")
    30         self.horizontalLayout.addWidget(self.label_2)
    31         self.printButton = QtWidgets.QPushButton(self.widget)
    32         self.printButton.setObjectName("printButton")
    33         self.horizontalLayout.addWidget(self.printButton)
    34         self.widget1 = QtWidgets.QWidget(self.controlsGroup)
    35         self.widget1.setGeometry(QtCore.QRect(10, 100, 201, 30))
    36         self.widget1.setObjectName("widget1")
    37         self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.widget1)
    38         self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
    39         self.horizontalLayout_2.setObjectName("horizontalLayout_2")
    40         self.previewStatus = QtWidgets.QCheckBox(self.widget1)
    41         self.previewStatus.setObjectName("previewStatus")
    42         self.horizontalLayout_2.addWidget(self.previewStatus)
    43         self.previewButton = QtWidgets.QPushButton(self.widget1)
    44         self.previewButton.setObjectName("previewButton")
    45         self.horizontalLayout_2.addWidget(self.previewButton)
    46         self.resultGroup = QtWidgets.QGroupBox(Form)
    47         self.resultGroup.setGeometry(QtCore.QRect(470, 20, 231, 151))
    48         self.resultGroup.setObjectName("resultGroup")
    49         self.resultLabel = QtWidgets.QLabel(self.resultGroup)
    50         self.resultLabel.setGeometry(QtCore.QRect(20, 30, 191, 101))
    51         self.resultLabel.setObjectName("resultLabel")
    52 
    53         self.retranslateUi(Form)
    54         QtCore.QMetaObject.connectSlotsByName(Form)
    55 
    56     def retranslateUi(self, Form):
    57         _translate = QtCore.QCoreApplication.translate
    58         Form.setWindowTitle(_translate("Form", "打印控件"))
    59         self.controlsGroup.setTitle(_translate("Form", "打印控制"))
    60         self.label.setText(_translate("Form", "打印份数:"))
    61         self.styleCombo.setItemText(0, _translate("Form", "A3"))
    62         self.styleCombo.setItemText(1, _translate("Form", "A4"))
    63         self.styleCombo.setItemText(2, _translate("Form", "A5"))
    64         self.label_2.setText(_translate("Form", "纸张类型:"))
    65         self.printButton.setText(_translate("Form", "打印"))
    66         self.previewStatus.setText(_translate("Form", "全屏预览"))
    67         self.previewButton.setText(_translate("Form", "预览"))
    68         self.resultGroup.setTitle(_translate("Form", "操作结果"))
    69         self.resultLabel.setText(_translate("Form", "<html><head/><body><p><br/></p></body></html>"))
    View Code
     1 # -*- coding: utf-8 -*-
     2 
     3 import sys     
     4 from PyQt5.QtWidgets import QApplication , QMainWindow
     5 from MainWinSignalSlog02 import Ui_Form
     6 from PyQt5.QtCore import pyqtSignal , Qt 
     7 
     8 class MyMainWindow(QMainWindow, Ui_Form):
     9     helpSignal = pyqtSignal(str)
    10     printSignal = pyqtSignal(list)
    11     # 声明一个多重载版本的信号,包括了一个带int和str类型参数的信号,以及带str参数的信号
    12     previewSignal = pyqtSignal([int,str],[str])
    13     
    14     def __init__(self, parent=None):    
    15         super(MyMainWindow, self).__init__(parent)
    16         self.setupUi(self)
    17         self.initUI()
    18         
    19     def initUI(self):      
    20         self.helpSignal.connect(self.showHelpMessage)
    21         self.printSignal.connect(self.printPaper)
    22         self.previewSignal[str].connect(self.previewPaper)
    23         self.previewSignal[int,str].connect(self.previewPaperWithArgs)  
    24         
    25         self.printButton.clicked.connect(self.emitPrintSignal)
    26         self.previewButton.clicked.connect(self.emitPreviewSignal)
    27 
    28     # 发射预览信号
    29     def emitPreviewSignal(self):
    30         if self.previewStatus.isChecked() == True:
    31             self.previewSignal[int,str].emit(1080," Full Screen")
    32         elif self.previewStatus.isChecked() == False:
    33             self.previewSignal[str].emit("Preview")
    34 
    35     # 发射打印信号
    36     def emitPrintSignal(self):
    37         pList = []
    38         pList.append(self.numberSpinBox.value() )
    39         pList.append(self.styleCombo.currentText())
    40         self.printSignal.emit(pList)
    41         
    42     def printPaper(self,list):
    43         self.resultLabel.setText("打印: "+"份数:"+ str(list[0]) +" 纸张:"+str(list[1]))
    44 
    45     def previewPaperWithArgs(self,style,text):
    46         self.resultLabel.setText(str(style)+text)        
    47 
    48     def previewPaper(self,text):
    49         self.resultLabel.setText(text)  
    50         
    51     # 重载点击键盘事件    
    52     def keyPressEvent(self, event):
    53         if event.key() == Qt.Key_F1:
    54             self.helpSignal.emit("help message")
    55 
    56     # 显示帮助消息
    57     def showHelpMessage(self,message):
    58         self.resultLabel.setText(message)
    59         self.statusBar().showMessage(message)
    60                  
    61 if __name__=="__main__":  
    62     app = QApplication(sys.argv)  
    63     win = MyMainWindow()  
    64     win.show()  
    65     sys.exit(app.exec_())  

     

  • 相关阅读:
    Hanoi塔
    采药
    进制转换(大数)
    Load Balancing with NGINX 负载均衡算法
    upstream模块实现反向代理的功能
    epoll
    在nginx启动后,如果我们要操作nginx,要怎么做呢 别增加无谓的上下文切换 异步非阻塞的方式来处理请求 worker的个数为cpu的核数 红黑树
    粘性会话 session affinity sticky session requests from the same client to be passed to the same server in a group of servers
    负载均衡 4层协议 7层协议
    A Secure Cookie Protocol 安全cookie协议 配置服务器Cookie
  • 原文地址:https://www.cnblogs.com/XJT2018/p/9869536.html
Copyright © 2011-2022 走看看