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

Python 如何在PyQt5中的线程之间传递数据?,python,qthread,pyqt5,qt-signals,Python,Qthread,Pyqt5,Qt Signals,由此 我学到了“在Qt中,您永远不应该试图从GUI线程之外直接更新GUI。” 这就是为什么我的PyQt5程序中有一个线程(监视器),“run”方法向插槽(MainWindow.save_文件)发出信号,该插槽依次显示qtwidts.QFileDialog.getSaveFileName并接受用户输入。所以我的问题是: 如何使这个MainWindow.save_文件将用户的输入返回到监视器线程 class Communicate(QtCore.QObject): show_

由此 我学到了“在Qt中,您永远不应该试图从GUI线程之外直接更新GUI。” 这就是为什么我的PyQt5程序中有一个线程(监视器),“run”方法向插槽(MainWindow.save_文件)发出信号,该插槽依次显示qtwidts.QFileDialog.getSaveFileName并接受用户输入。所以我的问题是: 如何使这个MainWindow.save_文件将用户的输入返回到监视器线程

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

非常感谢您的帮助。

在您的示例中,线程在发出信号后(即,一旦其
run()
方法返回)结束。所以你问的似乎没有完全意义。也许你应该多发一条。亲爱的Ekhumaro。否,发出信号后线程不会停止。也许你应该给出一个具体的答案。的文档非常清楚(见最后一句)。在你的示例中,线程在发出信号后(即,一旦其
run()
方法返回)结束。所以你问的似乎没有完全意义。也许你应该多发一条。亲爱的Ekhumaro。否,发出信号后线程不会停止。也许你应该发布一个具体的答案。的文档非常清楚(见最后一句)。