没有合适的资源?快使用搜索试试~ 我知道了~
首页PyQt5多线程防卡死和多窗口用法的实现
心得:写着写着找到了自己的感觉,还是需要大量的代码和项目来加深对代码的理解 一、PyQt5多线程防卡死 在界面中,通常用会有一些按钮,点击后触发事件,比如去下载一个文件或者做一些操作,这些操作会耗时,如果不能及时结束,主线程将会阻塞,这样界面就会出现未响应的状态,因此必须使用多线程来解决这个问题。 # -*- coding: UTF-8 -*- """"================================================= @Project -> File :Django @IDE :PyCharm @Author :爱跳水的温文尔雅的laughing @Da
资源详情
资源评论
资源推荐

PyQt5多线程防卡死和多窗口用法的实现多线程防卡死和多窗口用法的实现
心得:写着写着找到了自己的感觉,还是需要大量的代码和项目来加深对代码的理解
一、一、PyQt5多线程防卡死多线程防卡死
在界面中,通常用会有一些按钮,点击后触发事件,比如去下载一个文件或者做一些操作,这些操作会耗时,如果不能及时结
束,主线程将会阻塞,这样界面就会出现未响应的状态,因此必须使用多线程来解决这个问题。
# -*- coding: UTF-8 -*-
""""=================================================
@Project -> File :Django
@IDE :PyCharm
@Author :爱跳水的温文尔雅的laughing
@Date :2020/4/2 21:56
@Desc :
=================================================="""
from PyQt5.QtCore import pyqtSignal, QThread
from PyQt5.QtWidgets import QWidget, QMainWindow, QApplication
from untitled import Ui_MainWindow
import sys
import time
class Example(QThread):
signal = pyqtSignal(str) # 括号里填写信号传递的参数
def __init__(self):
super(Example, self).__init__()
def __del__(self):
self.wait()
def run(self):
"""
进行任务操作,主要的逻辑操作,返回结果
"""
for i in range(10):
time.sleep(0.5)
self.signal.emit(str("hello world"+str(i))) # 发射信号
class MyWindows(QMainWindow, Ui_MainWindow):
def __init__(self):
super(MyWindows, self).__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.buttonClick)
# 点击事件启动线程
def buttonClick(self):
self.thread = Example()
self.thread.signal.connect(self.callback) #连接回调函数,接收结果
self.thread.start() # 启动线程
def callback(self, msg):
self.lineEdit.setText(str(msg))
if __name__ == '__main__':
app = QApplication(sys.argv)
mywindow = MyWindows()
mywindow.show()
sys.exit(app.exec_())
点击之后显示会从1到9,逻辑运行在子线程,前端显示在主线程

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0