【问题标题】:defining signal outside __init__ of class doesn't work?在类的 __init__ 之外定义信号不起作用?
【发布时间】:2013-03-23 01:46:28
【问题描述】:

我正在尝试理解信号和插槽....

阅读一些东西

http://www.harshj.com/2010/05/06/pyqt-faq-custom-signals-jpeg-mouse-hovers-and-more/#custom

http://zetcode.com/tutorials/pyqt4/eventsandsignals/

这是一个问题:

class bla(object):
    blaSignal = QtCore.pyqtSignal()

有效但

类bla(对象):

def __init__(self):
    self.blaSignal = QtCore.pyqtSignal()

不起作用,它说明了有关信号未绑定的一些信息... 我在这里不明白什么?为什么有一个工作?

谢谢

【问题讨论】:

  • 请准确解释“不起作用”是什么意思,并显示确切的错误(带有回溯),而不仅仅是“关于信号未绑定的问题”。
  • 我假设您了解类属性和实例属性之间的基本区别,并且只想知道为什么信号必须是类属性。如果你也不明白第一部分,还有更多要回答的……
  • 是的,我了解基本区别,但可能几乎没有……现在也在阅读
  • 好的,很好,这个基本区别应该足以理解为什么你需要信号作为类属性,所以我认为我的回答应该足够了。

标签: python pyqt signals-slots


【解决方案1】:

这里的问题是,您希望有一个信号被所有 bla 对象共享。

如果每个bla 都有不同的信号,那么在不知道拥有特定信号的特定bla 实例的情况下,任何人都无法连接任何信号。这在程序中已经够糟糕的了,但想象一下像QtDesigner 或基于QMetaObject 的内省将如何处理它。即使它创建了一个 bla 实例,它也不会与您的代码在运行时创建的 bla 实例相同。

这在文档中的Defining New Signals with pyqtSignal() 中有所解释。

【讨论】:

  • 好吧,大部分都是有道理的。所以基本上,如果两个按钮属于 bla 类,我按下其中一个按钮都会发出信号?
猜你喜欢
  • 1970-01-01
  • 2020-04-13
  • 2015-03-25
  • 1970-01-01
  • 1970-01-01
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多