在 Python 中编写自定义 QPushButton class

Writing a custom QPushButton class in Python

我最近开始自学 PyQt,但在尝试编写一个继承自 QPushButton 的自定义 class 以便调整其属性时遇到了一些麻烦。每当我初始化此 class 的对象时,我都试图将文本作为参数传递。我很确定我的 init 有问题,但我还没有找到它。 这是代码:

import sys
from PySide import QtGui, QtCore


class mainb(QtGui.QPushButton):
    def __init__(Text,self, parent = None):
        super().__init__(parent)
        self.setupbt(Text)

    def setupbt(self):
        self.setFlat(True)
        self.setText(Text)
        self.setGeometry(200,100, 60, 35)
        self.move(300,300)
        print('chegu aqui')
        self.setToolTip('Isso é muito maneiro <b>Artur</b>')
        self.show()


class mainwindow(QtGui.QWidget):
    def __init__(self , parent = None):
        super().__init__()        
        self.setupgui()
    def setupgui(self):
        self.setToolTip('Oi <i>QWidget</i> widget')       
        self.resize(800,600)
        self.setWindowTitle('Janela do Artur')
        af = mainb("Bom dia",self)
        self.show()
"""
        btn = QtGui.QPushButton('Botão',self)
        btn.clicked.connect(QtCore.QCoreApplication.instance().quit)
        btn.resize(btn.sizeHint())
        btn.move(300, 50)
"""



def main():

    app = QtGui.QApplication(sys.argv)
    ex = mainwindow()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

您的 def setupbt(self) 似乎没有将文本作为参数。请尝试 def setupbt(self, Text):

您以错误的方式使用了 super,super 必须获得一个实例,而您的第一个参数是 Text,这是错误的,应该是 self。我修复了一些问题,下面的代码应该适合你

import sys
from PySide import QtGui, QtCore


class mainb(QtGui.QPushButton):
    def __init__(self, Text, parent = None):
        super(mainb, self).__init__()
        self.setupbt(Text)

    def setupbt(self, Text):
        self.setFlat(True)
        self.setText(Text)
        self.setGeometry(200,100, 60, 35)
        self.move(300,300)
        print('chegu aqui')
        self.setToolTip('Isso muito maneiro <b>Artur</b>')
        self.show()


class mainwindow(QtGui.QWidget):
    def __init__(self , parent = None):
        super(mainwindow, self).__init__()    
        self.setupgui()
    def setupgui(self):
        self.setToolTip('Oi <i>QWidget</i> widget')       
        self.resize(800,600)
        self.setWindowTitle('Janela do Artur')
        newLayout = QtGui.QHBoxLayout()
        af = mainb("Bom dia",self)
        newLayout.addWidget(af)
        self.setLayout(newLayout)
        self.show()


def main():

    app = QtGui.QApplication(sys.argv)
    ex = mainwindow()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()