PYQT线程应用实例 龟兔赛跑

磊落不羁 by:磊落不羁 分类:pyQt5 时间:1年前 阅读:101 评论:0
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_())              #程序关闭时候退出进程

运行效果

screenshots.gif

非特殊说明,本文版权归原作者所有,转载请注明出处

本文地址:http://php.liulei.com.cn/?type=acticle&id=62

评论列表

发表评论

  • 昵称(必填)
  • 邮箱
  • 网址

TOP