PyQt:嵌套继承setupUi

时间:2018-03-28 15:50:57

标签: python python-3.x pyqt pyqt5

我试图让自定义窗口小部件对每个子类越来越具有描述性。例如下面,我在制作盒子时添加了一个盒子列表。我希望do_stuff()只运行一次,但我想让它在初始化时运行。我的问题是我需要在完成之前运行所有__setupUi()函数。任何帮助表示赞赏。

from PyQt5 import QtCore, QtWidgets

class layer4:
    def __init__(self):
        self.boxes = [] 
        self.__setupUi()
        # I want to run this once AFTER all of the children (regardless of how deep it goes) have run
        self.do_stuff()


    def __setupUi(self):
        self.qsb = QtWidgets.QSpinBox()
        self.boxes.append(self.qsb)

    def do_stuff(self):
        print(self.boxes)

class layer3(layer4):
    def __init__(self):
        super().__init__()
        self.__setupUi()

    def __setupUi(self):
        self.qsb2 = QtWidgets.QSpinBox()
        self.boxes.append(self.qsb2)

class layer2(layer3):
    def __init__(self):
        super().__init__()
        self.__setupUi()

    def __setupUi(self):
        self.datetimebox = QtWidgets.QDateTimeEdit()
        self.boxes.append(self.datetimebox)

class layer1(layer2):
    def __init__(self):
        super().__init__()
        self.__setupUi()

    def __setupUi(self):
        self.other = QtWidgets.QDateTimeEdit()
        self.boxes.append(self.other)

所以如果我跑

t = layer2()

它应该返回2个QSpinboxes和1个datetimeedit

0 个答案:

没有答案