PyQt5问题,使用zip和lambda函数遍历QPushButtons和range列表

问题描述

在我的程序中,我有一个列表fields,其中包含QPushButton个对象(self.field1self.field2 ... self.field9)。

self.fields = []
self.field1 = QPushButton(self.gridLayoutWidget)
self.fields.append(self.field1)
...
self.field9 = QPushButton(self.gridLayoutWidget)
self.fields.append(self.field9)

我想将每个QPushButton的信号clicked连接到功能change_field(position)的插槽,该插槽需要另一个参数,因此我正在使用zip()和{{ 1}}函数。这是我想要实现的目标(此代码可以正常运行):

lambda

现在,如果我尝试使用self.field1.clicked.connect(lambda: self.game.change_field(0)) self.field2.clicked.connect(lambda: self.game.change_field(1)) self.field3.clicked.connect(lambda: self.game.change_field(2)) self.field4.clicked.connect(lambda: self.game.change_field(3)) self.field5.clicked.connect(lambda: self.game.change_field(4)) self.field6.clicked.connect(lambda: self.game.change_field(5)) self.field7.clicked.connect(lambda: self.game.change_field(6)) self.field8.clicked.connect(lambda: self.game.change_field(7)) self.field9.clicked.connect(lambda: self.game.change_field(8)) 这样的循环来这样做:

for

这是行不通的...我觉得我一定很容易错过一些东西,但是我无法以某种方式解决这个问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)