ui.py
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'getbaidu.ui'
#
# Created by: PyQt5 UI code generator 5.15.2
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(640, 480)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit.setGeometry(QtCore.QRect(0, 160, 631, 271))
self.textEdit.setObjectName("textEdit")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(260, 30, 75, 23))
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 640, 23))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
self.pushButton.clicked.connect(MainWindow.get_baidu)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "访问百度"))
main.py
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from getbaidu import *
import time
from PyQt5.QtCore import QThread ,pyqtSignal
class MyWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MyWindow, self).__init__(parent)
self.setupUi(self)
#self.mythread = MyThread() # 实例化自己建立的任务线程类
#self.mythread.signal.connect(self.callback) # 设置任务线程发射信号触发的函数
def get_baidu(self):
self.mythread = MyThread() # 实例化自己建立的任务线程类
self.mythread2 = MyThread() # 实例化自己建立的任务线程类
self.mythread.signal.connect(self.callback) # 设置任务线程发射信号触发的函数
self.mythread2.signal.connect(self.callback) # 设置任务线程发射信号触发的函数
self.mythread.start() # 启动任务线程
self.mythread2.start() # 启动任务线程
def callback(self, i): # 这里的 i 就是任务线程传回的数据
self.textEdit.append(i)
class MyThread(QThread): # 建立一个任务线程类
signal = pyqtSignal(str) #设置触发信号传递的参数数据类型,这里是字符串
def __init__(self):
super(MyThread, self).__init__()
def run(self): # 在启动线程后任务从这个函数里面开始执行
for i in range(10):
self.signal.emit(str(i)) #任务线程发射信号用于与图形化界面进行交互
time.sleep(1)
if __name__ == '__main__':
app = QApplication(sys.argv)
myWin = MyWindow()
myWin.show()
sys.exit(app.exec_())