假设我有一本字典:
d = {'Button 1': 'This is button 1', 'Button 2': 'This is button 2'}
我可以为其添加更多“按钮X”。
GUI初始化后,我想创建与字典中的键一样多的按钮,并且按钮的文本等于字典的键,并且需要一个函数,该函数返回链接到键的每个值的文本。 / p>
因此,当我单击显示“按钮1”的按钮时,它将例如打印“这是按钮1”,等等。
另外,也可以从列表中选择它,例如:
listt = [('Button 1','This is button 1'),('Button 2','This is button 2')]
对于这最后一种方法,我尝试了此代码,但未执行预期的操作。
buttons = []
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
self.centralwidget = QtWidgets.QWidget(self)
self.centralwidget.setObjectName("centralwidget")
self.main_box = QtWidgets.QHBoxLayout(self.centralwidget)
self.hbox1 = QtWidgets.QHBoxLayout()
for i in range(len(listt)):
buttons.append(QtWidgets.QPushButton(self.centralwidget))
buttons[i].setText(listt[i][0])
buttons[i].clicked.connect(lambda: print_name(listt[i][1]))
self.hbox1.addWidget(buttons[i])
def print_name(textt):
print(textt)
这里的主要问题是,通过此方法创建的所有按钮最终都将打印列表的最后一个对象的文本,在本示例中,两个按钮都最终将打印“这是按钮2”。