我正在使用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)
非常感谢任何想法。
答案 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)