免责声明:我已经读过其他类似的问题(例如 one )但还没有找到适合我的解决方案(或者我只是不理解它们: ))
当我创建 lambda
在 for 循环中访问 block 范围内的数据我得到一个 pylint
警告 ( cell-var-from-loop
) 因为 Python 捕获工作的方式。例如:
for key, value in data.items():
button = QtGui.QPushButton('show data')
button.clicked.connect(lambda: show_data(value))
table_widget.setCellWidget(1, 1, button)
类似的问题还有很多,但我现在还不知道我是如何系统地解决这个问题的。我试图为 lambda
提供默认值喜欢建议here :
for key, value in data.items():
button = QtGui.QPushButton('show data')
button.clicked.connect(lambda v=value: show_data(v))
table_widget.setCellWidget(1, 1, button)
但是当我这样做时,奇怪的事情发生了 - 而 value
在我的示例中应该是一个字符串 show_data
正在用 bool
调用.
我做错了什么吗?这种方法应该有效吗?
我是一名优秀的程序员,十分优秀!