从此 PyQt - Modify GUI from another thread 我了解到“在Qt中,你永远不应该尝试从GUI线程外部直接更新GUI。” 这就是为什么在我的PyQt5程序中我有一个线程(Monitor),“run”方法向插槽发出一个信号(MainWindow.save_file),然后显示QtWidgets.QFileDialog.getSaveFileName并接受用户的输入。所以我的问题是: 如何使此MainWindow.save_file将用户的输入返回给Monitor线程。
class Communicate(QtCore.QObject):
show_save_file = QtCore.pyqtSignal()
class Monitor(QtCore.QThread):
def run(self):
self.c = Communicate()
self.c.show_save_file.connect(MainWindow.save_file)
self.c.show_save_file.emit()
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.setupUi()
# Some other PyQt stuff here....
def save_file(self):
# I need this slot to return out_file_name to another thread, Monitor
sender = self.sender()
out_file_name = QtWidgets.QFileDialog.getSaveFileName(self, '', '', 'flv')
非常感谢任何帮助。