在Python中编写自定义QPushButton类

时间:2015-08-17 05:07:03

标签: python qt pyqt pyside

我最近开始自己学习PyQt,并且在尝试编写一个继承自QPushButton的自定义类时遇到了一些麻烦,因此我可以调整其属性。每当我初始化这个类的对象时,我都试图将文本作为参数传递。我很确定我的 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()

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

你正在以错误的方式使用super,super必须得到一个实例,而另一件事你的第一个arg是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()