Как сжать экземпляры класса Python? - PullRequest
0 голосов
/ 26 апреля 2018

Я использую PyQt для создания графического интерфейса, и мне нужно создать периодическую таблицу из кнопок.Сильфон является частью кода.Для каждой кнопки требуется следующий код в методе 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 кнопок.В прошлом я создавал графический интерфейс, в котором была та же проблема, и я помню, что решил проблему с созданием другого класса, в котором я передавал аргумент для уникальных атрибутов каждой кнопки.

Я имел в виду нечто подобное, гдеLayoutElm - это класс.

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

Любые идеи будут высоко оценены.

1 Ответ

0 голосов
/ 26 апреля 2018

Вам просто нужно создать функцию, которая создает элемент:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...