【发布时间】:2016-08-08 09:43:36
【问题描述】:
我有两个使用 QT Designer 创建的 UI 窗口。每个 UI 都有两个单独的 python 脚本。我想要做的是第一个脚本打开一个窗口,创建一个寻找特定条件的线程,然后在找到时打开第二个 UI。然后第二个 UI 创建一个线程,完成后打开第一个 UI。
这似乎工作正常,这是调用信号时触发的部分代码:
def run_fuel(self):
self.st_window = L79Fuel.FuelWindow(self)
self.thread.exit()
self.st_window.show()
self.destroy()
所以这似乎工作正常。我仍然不确定终止线程的正确方法,文档似乎声明了 exit() 或 quit()。但是...显示来自另一个脚本(L79Fuel.py)的新窗口并且旧窗口被破坏。
然后新窗口做一些事情,当一个信号被调用时,它会触发一个类似的函数,我想关闭那个窗口,然后重新打开第一个窗口。
def start_first(self):
self.r_window = L79Tools.FirstWindow(self)
self.thread.exit()
self.r_window.show()
self.destroy()
这只是以代码 0 退出。我用调试器逐步完成了它,似乎正在发生的事情是它运行通过 start_first,在函数中执行所有操作,然后返回到第一个窗口的 @987654324 @,执行该行,然后循环回到 start_first 函数(第二个窗口)并再次执行该代码,循环,一遍又一遍。
我被难住了。我已经阅读了尽可能多的内容,但似乎没有任何内容可以解决这个问题。我猜我在线程方面做错了(两个窗口都有一个线程)并且我没有正确地杀死线程,或者类似的东西。
【问题讨论】:
标签: python multithreading qt pyqt pyqt5