PyQt从具有参数的类生成自定义PushButton /继承

时间:2016-07-06 21:52:21

标签: python inheritance pyqt pyqt4

我是PyQt的新手我想建立自己的QCheckBox继承的Check Box。

class Valve(QtGui.QCheckBox):
    def __init__(self, x, y, inputs=[], outputs=[]):
        QtGui.QCheckBox.__init__(self)
        self.sources = inputs
        self.outputs = outputs
        self.move(x, y)

    def is_fillable(self):
        for source in self.sources:
            if source.value == 100: 
                return 1
        return 0

    def stateChanged():
        if isChecked():
            for output in self.outputs:
                if self.is_fillable():
                    output.fill(1)
        else:
            for output in self.outputs:
                if self.is_fillable:
                    output.fill(-1)

class MainWindow(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        self.initUI()

    def initUI(self):
        self.button1 = Valve('', self, 5, 6)

        self.setGeometry(0, 0, 500, 500)
        self.show()

def main():

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

if __name__ == '__main__':
    main() 

说明我在这里做了什么:

我想建立水系统。我将使用进度条作为管道,因此在我的代码输入和输出将是QProgressBar,我将用它们的值填充它们。

然而我的Valve(CheckBox)没有显示在我的窗口因为我无法想象如何从QCheckButton继承,因为它有参数。

感谢您的回答

1 个答案:

答案 0 :(得分:2)

您希望将MainWindow作为复选框的父级传递:

class Valve(QtGui.QCheckBox):

    def __init__(self, parent, x, y, inputs=[], outputs=[]):
        QtGui.QCheckBox.__init__(self, parent)

class MainWindow(QtGui.QWidget):

    def initUI(self):
        self.button1 = Valve(self, 5, 6)