如何压缩Python类实例?

时间:2018-04-26 01:41:18

标签: python string class pointers pyqt

我正在使用PyQt创建一个GUI,需要创建一个由按钮组成的周期表。贝娄是代码的一部分。每个按钮都需要方法mainLayout(self)中的以下代码。

class App(QMainWindow):

    def __init___(self):
        ...

    def mainLayout(self):
        Element1 = QPushButton('shortname', self)
        Element1.setToolTip('longname')
        Element1.setCheckable(True)
        Element1.resize(50, 50)
        Element1.move(x, y)
        Element1.clicked.connect(self.Element1_click)

当有118个按钮时,这是一个按钮的大量重复代码。我在过去制作了一个GUI,它有同样的问题,我记得我解决了创建另一个类的问题,我传递了每个按钮的唯一属性的参数。

我有类似的东西,其中LayoutElm是一个类。

LayoutElm(Element1 ,'shortname', 'longname', x, y, Element1_click)

非常感谢任何想法。

1 个答案:

答案 0 :(得分:0)

您只需要创建一个创建项目的函数:

class App(QMainWindow):
    def __init___(self):
        ...

    def mainLayout(self):
        createLayoutElm('shortname', 'longname', (x, y), self.Element1_click)
        createLayoutElm('shortname1', 'longname1', (100, 100), self.Element1_click2)
        ...

    def createLayoutElm(self, name, tooltip, pos, callback):
        btn = QPushButton(name, self)
        btn.setToolTip(tooltip)
        btn.setCheckable(True)
        btn.resize(50, 50)
        btn.move(*pos)
        btn.clicked.connect(callback)