0

我是 Python 中 GUI 应用程序开发的新手。我正在使用 PySide 开发 GUI。我需要跨两个线程传递参数的帮助。我知道如何使用自定义信号和插槽机制。

我希望将 alist从 my传输second thread到 my main thread

Python 伪代码(我希望将列表correction_values从 mysecond 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?
4

1 回答 1

3

您可以使用新型发射和信号。这比旧式容易。您只需创建信号对象;

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):
    .
    .

最后,使用“发射”信号;

correction_values = ['1', '2', '3'] # List data-type
self.Test1_Passed.emit(correction_values)

您也可以阅读此文档以获取更多信息。

于 2014-09-15T08:51:05.863 回答