添加自定义小部件没有布局

时间:2015-12-31 17:12:53

标签: qt pyqt pyqt5

我将一个小部件(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

我该怎么办?

1 个答案:

答案 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)