PyQT5:当触发菜单操作时,这个布尔值是什么?

时间:2015-02-04 11:10:55

标签: python pyqt pyqt5

所以我在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)

菜单已创建但是当选择菜单项时,doStuff()总是传递值为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 ++文档,而且对于我来说并不是很明显。

我想了解布尔值是什么以及为什么,在我的情况下,它总是为假。我尝试过改变各种各样的东西,但我还没有设法找到一个真实的场景。

由于

PyQT5.4,Windows上的Python 3.4.2。

1 个答案:

答案 0 :(得分:1)

triggered signal的C ++文档不应该太难理解:

  

void QAction :: triggered(bool checked = false)
  ...
  如果操作是可检查的,则检查操作时检查为true,如果未选中操作则检查为false。

因此,使用布尔参数发出信号,该参数指示操作的“已检查”状态,并且此参数覆盖了menuItem参数的默认值。