【发布时间】:2020-12-21 16:34:22
【问题描述】:
我将三个按钮连接到一个函数,该函数接受一个参数并简单地打印它。正如您在下面的 MWE 中所见,按钮以外观不同的方式传递参数,但据我所知,没有任何语义差异。
from PyQt5.QtWidgets import QPushButton, QFrame, QApplication, QVBoxLayout
from functools import partial
def func(i):
print(i)
app = QApplication([])
frame = QFrame()
layout = QVBoxLayout()
frame.setLayout(layout)
b1 = QPushButton('button 1', frame)
b1.clicked.connect(lambda: func(1))
b2 = QPushButton('button 2', frame)
b2.clicked.connect(partial(func, i=2))
b3 = QPushButton('button 3', frame)
b3.clicked.connect(lambda x=3: func(x))
layout.addWidget(b1)
layout.addWidget(b2)
layout.addWidget(b3)
frame.show()
app.exec()
所以当我点击按钮 1 到 3 时,我希望看到
1
2
3
但是我得到了
1
2
False
最后一个 lambda 有什么问题?这可能是 PyQt 的错误吗?
PyQt 版本为 5.15.2。
【问题讨论】:
-
您将 x 与返回 false 的 3 进行比较。试试这个:
(lambda x: func(x))(3)
标签: python python-3.x pyqt5