Итак, я относительно новичок в 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)
и, конечно же, теперь все работает так, как я хотел. Я все еще получаю False в bVal, который я просто игнорирую.
Я пытался просмотреть документацию PyQt, но справочный раздел ссылается на документацию C++, и мне не очевидно, что происходит.
Я хотел бы понять, что такое логическое значение и почему в моем случае оно всегда равно False. Я пытался изменить разные вещи, но мне не удалось найти сценарий, в котором это правда.
Спасибо
PyQT5.4, Python 3.4.2 в Windows.