当运行较为费时的逻辑时,可能UI界面会卡死。为解决这个问题,可以使用多线程。通过信号,通知主线程刷新页面。
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'main.py'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtWidgets, QtCore
from PyQt5.QtCore import pyqtSignal
from QtUi import Ui_MainWindow
import sys
class WriteThread(QtCore.QThread):
_signal = pyqtSignal(str)
def __init__(self):
super(WriteThread, self).__init__()
def run(self):
self._signal.emit("write OK")
def callback(self, msg):
print('callback')
class MyWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super(MyWindow, self).__init__()
self.setupUi(self)
self.pushButton_Write.clicked.connect(self.write)
def write(self):
# 创建线程
self.thread = WriteThread()
# 连接信号
self.thread._signal.connect(self.flush)
# 开始线程
self.thread.start()
def flush(self, msg):
print("flush " + msg)
self.label_log.setText(msg)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
myshow = MyWindow()
myshow.show()
sys.exit(app.exec_())