我是Python中GUI应用程序开发的新手。我正在使用PySide开发GUI。我需要帮助跨两个线程传递参数。我知道如何使用自定义信号和插槽机制。
我希望从我的list
向second thread
传送main thread
。
Python伪代码(我希望从correction_values
向second thread
发送一个列表main thread
:
---main thread----
self.connect(self.Tests_Start, SIGNAL("Test1_Passed()"), self.StartThread_Test1_Passed, Qt.DirectConnection)
def StartThread_Test1_Passed(self, values):
for value in values:
self.textEdit1.insertPlainText(value)
self.textEdit1.insertPlainText(',')
-
---second thread----
def Tests()
self.emit(SIGNAL("Test1_Passed()"), correction_values) # Is this way possible?
答案 0 :(得分:2)
你可以使用new-style emit&信号。它比旧式容易。你刚刚创建信号对象;
class QCustomWidget (QtCore.QWidget):
# create a new signal name 'Test1_Passed' and argument 'object' (Anything)
Test1_Passed = QtCore.Signal(object)
def __init__ (self):
.
.
接下来,使用'connect'连接信号;
self.Test1_Passed.connect(self.StartThread_Test1_Passed)
检查你的函数是否是传递变量;
@QtCore.Slot(object)
def StartThread_Test1_Passed (self, values):
.
.
最后,使用'emit'信号;
correction_values = ['1', '2', '3'] # List data-type
self.Test1_Passed.emit(correction_values)
另外,您可以阅读此document了解更多信息。