【发布时间】:2015-02-05 05:40:30
【问题描述】:
所以我在 Python 方面相对较新,我一直在尝试学习 PyQt。我想根据列表的内容动态创建一个菜单。我找到了一个我改编的例子,它看起来像这样:
for someText in myList:
entry = QAction(someText,MainWindow)
self.myMenu.addAction(entry)
entry.triggered.connect(lambda menuItem=someText: self.doStuff(menuItem))
entry.setText(someText)
The menu was created but when a menu item was chosen doStuff() always got passed a value of False.所以我把上面的改成:
for someText in myList:
entry = QAction(someText,MainWindow)
self.myMenu.addAction(entry)
entry.triggered.connect(lambda bVal, menuItem=someText: self.doStuff(bVal,menuItem))
entry.setText(someText)
果然,现在一切都按我的意愿工作了。我仍然在 bVal 中得到 False,我只是忽略了它。
我已经尝试查看 PyQt 文档,但参考部分链接到 C++ 文档,我看不出发生了什么。
我想了解布尔值是什么以及为什么在我的情况下它总是 False。我尝试过改变各种事情,但我没有设法找到一个正确的场景。
谢谢
PyQT5.4,Windows 上的 Python 3.4.2。
【问题讨论】: