当我点击最小化按钮在后台执行这个操作时,线程经常会超出限制时间执行,唤醒后台的程序就恢复正常了。请耐心等待,大约一分钟后就会出现。import sys, random, time, functoolsfrom PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMainWindow, QHBoxLayoutfrom PyQt5.QtCore import QThread, QObjectdef clock(func): @functools.wraps(func) def clocked(*args, **kwargs): t0 = time.time() result = func(*args, **kwargs) elapsed = time.time() - t0 name = func.__name__ l_arg = [] if args: l_arg.append(', '.join(repr(arg) for arg in args)) arg_str = ', '.join(l_arg) print('[%0.5fs] %s(%s)' % (elapsed, name, arg_str)) return result return clocked@clockdef go_sleep(sleep_time): time.sleep(sleep_time)def go_run(): for i in range(100): go_sleep(random.randint(1, 3))class WorkThread(QObject): def __int__(self): super(WorkThread, self).__init__() def run(self): go_run()class WinForm(QMainWindow): def __init__(self, parent=None): super(WinForm, self).__init__(parent) self.button1 = QPushButton('Run') self.button1.clicked.connect(self.onButtonClick) self._thread = QThread(self) self.wt = WorkThread() self.wt.moveToThread(self._thread) layout = QHBoxLayout() layout.addWidget(self.button1) main_frame = QWidget() main_frame.setLayout(layout) self.setCentralWidget(main_frame) def onButtonClick(self): self.button1.setText('Running') self._thread.started.connect(self.wt.run) self._thread.start()if __name__ == "__main__": app = QApplication(sys.argv) form = WinForm() form.show() sys.exit(app.exec_())
添加回答
举报
0/150
提交
取消