如何在PyQt5中的线程之间传递数据?

时间:2015-10-23 11:04:31

标签: python qthread pyqt5 qt-signals

从此 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')

非常感谢任何帮助。

0 个答案:

没有答案