【发布时间】:2021-08-05 20:11:03
【问题描述】:
这是启动QApp -> Worker -> Something that causes sys.exit() inside the worker的应用程序示例
import sys
from PyQt5.QtCore import QRunnable, pyqtSlot, QThreadPool
from PyQt5.QtWidgets import QWidget, QApplication
class App(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
self.threadpool = QThreadPool()
worker = Worker()
self.threadpool.start(worker)
def init_ui(self):
self.setFixedSize(600, 300)
self.show()
class Worker(QRunnable):
def __init__(self):
super(Worker, self).__init__()
@pyqtSlot()
def run(self):
print("Running worker...")
run_application()
def run_window():
app = QApplication([])
ex = App()
sys.exit(app.exec_())
def run_application():
print('Running application...')
sys.exit(10)
if __name__ == '__main__':
run_window()
我运行它时有几种情况:
退出代码 0
退出代码 10
窗户一直挂着
感觉就像一场赛车。
那么在sys.exit()或worker内部异常的情况下终止窗口的正确方法是什么?
编辑:忘了说我需要返回退出代码并跟踪它,因为我通过subprocess/Popen 运行窗口。
【问题讨论】:
标签: python python-3.x pyqt5