我现在正在使用Python和PyQt编写应用程序,而且我有一些问题。这个问题并不需要了解PyQt本身,只需要了解python中的静态变量。我想把一些信号添加到一个类中,当信号被触发时它会发出类的实例。
我所拥有的是这样的:
class Foo(QObject):
# ...
# Signals
updated = pyqtSignal(Foo)
moved = pyqtSignal(Foo)
# ...
Python给了我错误:
NameError: name 'Foo' is not defined
Foo
绑定到全局变量时,这必须做一些事情。我也不能在这里使用self
。如何解决这个问题的任何帮助将不胜感激。
答案 0 :(得分:2)
声音就像这个信号传递自己的类变量。从参考文献pyqt signal开始。它可能使用QObject
。 (不是Foo
,但是子类是相同的)
或者,如果您想传递任何对象,我认为您可以使用object
;
class Foo(QObject):
updated = pyqtSignal(object)
moved = pyqtSignal(object)
你可以指定哪个类应该在pyqt connect signal中发出它。
答案 1 :(得分:1)
问题是语句updated = pyqtSignal(Foo)
在构建Foo
时评估 ,因此在评估该语句时Foo
不存在..在一般情况下,你必须将它移到类定义之外,尽管可能有一些pyqt魔法(例如使用QObject
而不是Foo
,如另一个答案中所述) :
class Foo(...):
...
Foo.updated = pyqtSignal(Foo)