这是我猜的基本OOP理解问题。但是:而不是
class MyWidget(QtGui.QWidget):
def __init__(self):
"""
Parameters
----------
"""
QtGui.QWidget.__init__(self)
button = QtGui.QPushButton(self)
...
我想要自定义按钮,继承如下:
class MyButton(QtGui.QPushButton):
def __init__(self):
...
所以,我可以用它代替:
class MyWidget(QtGui.QWidget):
def __init__(self):
"""
Parameters
----------
"""
QtGui.QWidget.__init__(self)
button = MyButton(self)
...
问题是,我不知道如何使按钮成为Widget的对象,因为我无法传递小部件本身?在此先感谢
答案 0 :(得分:0)
这两种情况都做同样的事情:您在button
的{{1}}函数中创建__init__
,一个类的实例。
问题是,您无法在任何其他功能中使用MyWidget
,因为它超出了范围。您没有将其定义为类属性,您只将其定义为此特定函数的局部变量
要将button
作为button
的属性,您必须使用关键字MyWidget
:
self
稍后,您将可以执行self.button=MyButton()
之类的操作。您还可以使用myWidget.button.someFunction..
的任何其他方法拨打self.button
。
你们有些混淆可能来自PyQt。
MyWidget
使用上面的代码,您将作为参数button = QtGui.QPushButton(self)
传递(在您的情况下,self
指的是self
)。这实际上是针对Qt的,目的是将myWidget
设置为myWidget
的父级。
button
似乎是多余的,但第一个self.button = QtGui.QPushButton(self)
用于python,第二个用于Qt(用于C ++)。
最后,您应该使用父参数进行子类化:
self
答案 1 :(得分:0)
像这样工作:
class MyPushButton(QtGui.QPushButton):
def __init__(self, *args):
QtGui.QPushButton.__init__(self, *args)
要真正理解这一点,我可能会在PyQt参考中找到答案