Python 如何在PyQt5中的线程之间传递数据?
由此 我学到了“在Qt中,您永远不应该试图从GUI线程之外直接更新GUI。” 这就是为什么我的PyQt5程序中有一个线程(监视器),“run”方法向插槽(MainWindow.save_文件)发出信号,该插槽依次显示qtwidts.QFileDialog.getSaveFileName并接受用户输入。所以我的问题是: 如何使这个MainWindow.save_文件将用户的输入返回到监视器线程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_
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。否,发出信号后线程不会停止。也许你应该发布一个具体的答案。的文档非常清楚(见最后一句)。