在python中检测模块(将数据发送到GUI线程)

时间:2012-01-03 10:09:03

标签: python qt pyqt

所以我写了这个用来实现4个标签的软件(现在8个)。现在,每个选项卡都是自己的QThread,显然还有一个通用的GUI线程。当需要更新时,工作线程(选项卡线程)将数据发送回GUI线程。例如,我在GUI线程中有一个statusBar文本,每次工作线程执行某些操作时都需要更新。我正在使用SIGNAL / SLOT,我检测传入SIGNAL的方式是这样的:

def setStatus(self, status):
    #Defining SIGNAL sender
    self.sender = QObject().sender()        
    if "module1" in str(self.sender):
        self.module1CurrentStatus.setText(status)

现在这一切都有效,但就像我说的那样,软件已经从实现4个标签增加到实现8个标签。有没有更好的方法来实现它,而不是使用sender()?我只是在寻找一些只能为所有模块编写一次的东西,这是GUI自动知道SIGNAL来自哪个线程的一种方式。我知道我可以为每个模块写一个单独的SIGNAL,但我没有做到这一点。

2 个答案:

答案 0 :(得分:0)

如果我正确理解您的要求,您可以使用QSignalMapper重新发出带有标识符的信号。

答案 1 :(得分:-1)

模块名称可以通过__name__获取,除非文件作为脚本运行。