果:

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