如何通过PySide上的另一个线程从QMainWindow类捕获Signal?

JNeto06

我有一个MainWindow类,该类上运行有一个Gui应用程序,我希望每次我从应用程序中单击一个按钮时,都会发出信号并被另一个线程捕获。有我的示例代码(很抱歉,我没有发布我的真实代码,但现在确实很大):

from PySide.QtGui import *
from PySide.QtCore import *
import sys
import mainGui    #Gui file

class MainWindow(QMainWindow, mainGui.Ui_MainWindow):

mySignal = Signal()


    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
        self.newThread = workThread()
        self.newThread.start()

        #myButton is part of Gui application
        self.myButton.clicked.connect(self.myfunction)

    def myfunction(self):
        self.mySignal.emit()

    (...) #Other functions and methods

class workThread(QThread):
     def __init__(self, parent=None):
         super(workThread, self).__init__(parent)

         #The problem:
         MainWindow.mySignal.connect(self.printMessage)

     def run(self):
          (...)

     def printMessage(self):
         print("Signal Recived")
         (...)


def main():
    app = QApplication(sys.argv)
    form = MainWindow()
    form.show()
    app.exec_()

if __name__=="__main__":
    main()

...并且出现以下错误:MainWindow.mySignal.connect(self.printMessage)AttributeError:'PySide.QtCore.Signal'对象没有属性'connect'

有什么想法我该如何解决?提前致谢!

ekhumoro

信号就像方法一样-它们必须绑定到实例。如果您尝试直接通过类访问它们,它们将无法正常工作。

解决该示例的一种方法是将MainWindowin的实例作为线程的父级传递,如下所示:

    self.newThread = workThread(self)
    ...

    parent.mySignal.connect(self.printMessage)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在另一个类的UI线程上运行

来自分类Dev

如何通过在Javascript另一个类的实例访问另一个类中的方法

来自分类Dev

如何传播和捕获Raku中另一个线程抛出的错误?

来自分类Dev

另一个线程的代码如何在主线程上运行?

来自分类Dev

捕获另一个类抛出的异常?

来自分类Dev

android:从另一个类中的另一个线程更新UI

来自分类Dev

线程安全:JFrame和另一个类

来自分类Dev

从另一个类通知java线程

来自分类Dev

如何通过 ViewModel 中的另一个属性捕获模型中属性的更改?

来自分类Dev

如何使用另一个类的公共成员函数作为参数调用线程

来自分类Dev

C#-如何从另一个类中的线程更新主UI

来自分类Dev

如何将GUI文件作为Java中另一个类的线程运行?

来自分类Dev

如何通过创建另一个类的对象的类访问方法?

来自分类Dev

如何通过从另一个“类”调用“new”来获取 JavaScript“类”?

来自分类Dev

如何通过调用另一个方法从一个对象的方法启动线程?

来自分类Dev

从另一个线程访问一个线程上的变量-Android

来自分类Dev

如何通过另一个类更新/更改一个类的初始化参数?

来自分类Dev

如何通过Java中的方法将对象从一个类传递到另一个类

来自分类Dev

如何保证异步方法继续在另一个线程上运行?

来自分类Dev

如何在另一个线程上呈现视觉效果

来自分类Dev

如何在传递给另一个类的类上设置属性的值?

来自分类Dev

通过另一个类更新标签

来自分类Dev

通过另一个类调用方法

来自分类Dev

Unity 通过碰撞改变另一个类

来自分类Dev

如何获取另一个线程的ThreadStatic值?

来自分类Dev

如何从另一个线程正确停止QTimer

来自分类Dev

如何从另一个线程填充面板?

来自分类Dev

如何从另一个线程android访问对象

来自分类Dev

如何从另一个线程调用控制方法

Related 相关文章

  1. 1

    在另一个类的UI线程上运行

  2. 2

    如何通过在Javascript另一个类的实例访问另一个类中的方法

  3. 3

    如何传播和捕获Raku中另一个线程抛出的错误?

  4. 4

    另一个线程的代码如何在主线程上运行?

  5. 5

    捕获另一个类抛出的异常?

  6. 6

    android:从另一个类中的另一个线程更新UI

  7. 7

    线程安全:JFrame和另一个类

  8. 8

    从另一个类通知java线程

  9. 9

    如何通过 ViewModel 中的另一个属性捕获模型中属性的更改?

  10. 10

    如何使用另一个类的公共成员函数作为参数调用线程

  11. 11

    C#-如何从另一个类中的线程更新主UI

  12. 12

    如何将GUI文件作为Java中另一个类的线程运行?

  13. 13

    如何通过创建另一个类的对象的类访问方法?

  14. 14

    如何通过从另一个“类”调用“new”来获取 JavaScript“类”?

  15. 15

    如何通过调用另一个方法从一个对象的方法启动线程?

  16. 16

    从另一个线程访问一个线程上的变量-Android

  17. 17

    如何通过另一个类更新/更改一个类的初始化参数?

  18. 18

    如何通过Java中的方法将对象从一个类传递到另一个类

  19. 19

    如何保证异步方法继续在另一个线程上运行?

  20. 20

    如何在另一个线程上呈现视觉效果

  21. 21

    如何在传递给另一个类的类上设置属性的值?

  22. 22

    通过另一个类更新标签

  23. 23

    通过另一个类调用方法

  24. 24

    Unity 通过碰撞改变另一个类

  25. 25

    如何获取另一个线程的ThreadStatic值?

  26. 26

    如何从另一个线程正确停止QTimer

  27. 27

    如何从另一个线程填充面板?

  28. 28

    如何从另一个线程android访问对象

  29. 29

    如何从另一个线程调用控制方法

热门标签

归档