Pyqt5 QWidget.show() 不在其他线程上工作
Pyqt5 QWidget.show() Not Working On Other Thread
看看我的 Qwidget 对象,如果我在主线程上处理这个对象没问题 Qwidget .show 正在工作但是
如果我 运行 在其他线程上 (threading.Thread) 程序冻结并关闭。
我能做什么?
一句话:不做。它甚至与线程无关,一切都与 UI 和“业务”逻辑的分离有关。
将线程中的代码 运行 放入 QObject。
让该对象发出信号并提供与 UI 交互的插槽。它根本不应该知道任何 UI 个对象。
使用 signal/slot 连接将该对象连接到 UI 对象。
将对象移动到另一个线程。
开始讨论。
你现在已经完全避免了这个问题。但是要确保业务逻辑对象永远不知道任何 UI 对象:它不能直接与它们交互,因为它会在错误的线程中 and 它赢了与 UI.
适当分离
看看我的 Qwidget 对象,如果我在主线程上处理这个对象没问题 Qwidget .show 正在工作但是 如果我 运行 在其他线程上 (threading.Thread) 程序冻结并关闭。
我能做什么?
一句话:不做。它甚至与线程无关,一切都与 UI 和“业务”逻辑的分离有关。
将线程中的代码 运行 放入 QObject。
让该对象发出信号并提供与 UI 交互的插槽。它根本不应该知道任何 UI 个对象。
使用 signal/slot 连接将该对象连接到 UI 对象。
将对象移动到另一个线程。
开始讨论。
你现在已经完全避免了这个问题。但是要确保业务逻辑对象永远不知道任何 UI 对象:它不能直接与它们交互,因为它会在错误的线程中 and 它赢了与 UI.
适当分离