PySide:emit()信号,列表作为参数

时间:2014-09-15 03:24:15

标签: python python-2.7 signals pyside emit

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

我希望从我的listsecond thread传送main thread

Python伪代码(我希望从correction_valuessecond 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?

1 个答案:

答案 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了解更多信息。