我将一个小部件(MyButton)子类化并给它我的样式表,动画等。
在另一个类(MyForm)中我想使用该按钮但没有布局。
class MyButton(QPushButton):
def __init__(self):
super(MyButton, self).__init__()
.
.
class MyForm(QDialog):
def __init__(self):
super(MyForm, self).__init__()
self.btn=MyButton(self)
self.btn.move(220, 30)
如果我尝试说self.btn=MyButton(self)
然后self.btn.move()
,则会出现此错误:
self.btn=MyButton(self)
TypeError: __init__() takes 1 positional argument but 2 were given
我该怎么办?
答案 0 :(得分:2)
__init__
类的MyButton
函数只接受一个参数 - self
,指向新创建的MyButton
实例的指针。但是你给它两个参数 - self
,每个方法作为第一个参数接收,parent
。
可能的解决方案是:
class MyButton(QtGui.QPushButton):
def __init__(self, parent):
super(MyButton, self).__init__(parent)
但这并不方便,因为你必须指定你的超类'参数的整个(可能很长)列表,包括位置和命名。在这种情况下,Python stars (*, **)是您最好的朋友:
class MyButton(QtGui.QPushButton):
def __init__(self, *args, **kwargs):
super(MyButton, self).__init__(*args, **kwargs)