• 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_())  

     

  • 相关阅读:
    TOMCAT源码分析(转)
    CSS从零开始(1)--CSS基础语法
    java生成验证码
    [转]java中作用域public private protected 以及不写的区别
    Java Socket NIO详解(转)
    mysql数据库单表只有一个主键自增id字段,ibatis实现id自增
    手机验证码执行流程
    javaweb之Filter过滤器详解
    HttpSessionListener的用法
    SpringContextHolder 静态持有SpringContext的引用
  • 原文地址:https://www.cnblogs.com/XJT2018/p/9869536.html
Copyright © 2020-2023  润新知