from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys
class thread_dowork(QThread):
sinOut = pyqtSignal(str) # 自定义信号,执行run()函数时,从相关线程发射此信号
def __init__(self, parent=None):
super(thread_dowork, self).__init__(parent)
self.working = True
self.num = 0
def __del__(self):
self.working = False
self.wait()
def run(self):
while self.working:
file_str = 'File index {0}'.format(self.num) # str.format()
self.num += 1
# 发出信号
self.sinOut.emit(file_str)
# 线程休眠2秒
self.sleep(2)
if self.num == 10:
break
class MainWidget(QWidget):
def __init__(self, parent=None):
super(MainWidget, self).__init__(parent)
self.layout = QGridLayout(self)
self.btnStart = QPushButton('开始')
self.initializecomponent()
self.thread = thread_dowork()
self.thread.sinOut.connect(self.updatedata)
# 按钮点击事件的槽函数
def buttonclick(self):
# QMessageBox.about(self, '标题', '关于对话框')
self.btnStart.setEnabled(False)
self.thread.start()
def updatedata(self, data):
self.setWindowTitle(data)
# 初始化UI界面控件
def initializecomponent(self):
self.setWindowTitle("Form1")
self.setFixedSize(400, 300)
self.btnStart.setFixedSize(100, 50)
self.btnStart.clicked.connect(self.buttonclick)
self.layout.addWidget(self.btnStart)
if __name__ == "__main__":
app = QApplication(sys.argv) # 新建QApplication实例
mainWidget = MainWidget() # 实例化一个类,继承自QWidget,也可以继承QMainWindow
mainWidget.show() # 显示窗口
sys.exit(app.exec_()) # 进入消息主循环,sys.exit可以不写但是关闭窗口不会退出进程
|
[QT][原创]PyQt5界面UI与数据更新
于 2019-11-12 16:56:32 首次发布