PYQT线程应用实例 龟兔赛跑
import sys from PyQt5.QtCore import * from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(493, 391) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") #创建兔子比赛窗口 self.textEdit = QtWidgets.QTextEdit(self.centralwidget) self.textEdit.setGeometry(QtCore.QRect(20, 60, 211, 251)) self.textEdit.setObjectName("textEdit") # 乌龟比赛窗口 self.textEdit_2 = QtWidgets.QTextEdit(self.centralwidget) self.textEdit_2.setGeometry(QtCore.QRect(260, 60, 211, 251)) self.textEdit_2.setObjectName("textEdit_2") #兔子标签 self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(90, 30, 54, 12)) self.label.setObjectName("label") # 乌龟标签 self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(340, 40, 54, 12)) self.label_2.setObjectName("label_2") #按钮 self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(190, 330, 101, 31)) self.pushButton.setObjectName("pushButton") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0, 0, 493, 23)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) self.r=Rabbit() self.r.sinOut.connect(self.rabbit) #创建兔子进程对象 self.t=Tortoise() #创建乌龟进程对象 self.t.sinOut.connect(self.tortoise) self.pushButton.clicked.connect(self.start) def start(self): self.r.start() self.t.start() def rabbit(self,str): self.textEdit.setPlainText(self.textEdit.toPlainText()+str) def tortoise(self,str): self.textEdit_2.setPlainText(self.textEdit_2.toPlainText()+str) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.label.setText(_translate("MainWindow", "兔子的比赛记录")) self.label_2.setText(_translate("MainWindow", "乌龟的比赛记录")) self.pushButton.setText(_translate("MainWindow", "开始比赛")) class Rabbit(QThread): sinOut=pyqtSignal(str) #自定义信号 def __init__(self): super(Rabbit, self).__init__() def run(self): for i in range(1,11): QThread.msleep(100) self.sinOut.emit(f"\n 兔子跑了{str(i)}0米") if i==9: self.sinOut.emit(f"\n 在睡觉") QThread.sleep(5) if i==10: self.sinOut.emit(f"\n 兔子到达终点") class Tortoise(QThread): sinOut=pyqtSignal(str) def __init__(self): super(Tortoise, self).__init__() def run(self): for i in range(1,11): QThread.msleep(500) self.sinOut.emit(f"\n 乌龟跑了{str(i)}0米") if i ==10: self.sinOut.emit(f"\n 乌龟到达终点") if __name__=="__main__": app=QtWidgets.QApplication(sys.argv) MainWindow=QtWidgets.QMainWindow() #创建窗口 ui=Ui_MainWindow() #创建qt设计的窗口 ui.setupUi(MainWindow) #初始化设置窗口 MainWindow.show() #显示窗口 sys.exit(app.exec_()) #程序关闭时候退出进程
运行效果
非特殊说明,本文版权归原作者所有,转载请注明出处
评论列表
发表评论