QMenu отображается только на QPushButton при вызове QPushButton.menu () - PullRequest
0 голосов
/ 15 марта 2019

С кодом из этого примера я не получаю меню на кнопке. Это просто останется простой кнопкой.

    menu = QMenu()
    Act1 = QtWidgets.QAction("Action 1", menu)
    Act1.setCheckable(True)
    Act2 = QtWidgets.QAction("Action 2", menu)
    Act2.setCheckable(True)
    menu.addAction(Act1)
    menu.addAction(Act2)

    btn = QtWidgets.QPushButton("Multiselection")
    btn.setMenu(menu)

Но это как-то работает при вызове btn.menu() после последней строки выше. К сожалению, эта строка также заставит python перестать работать после закрытия приложения.

вывод PyCharm: Process finished with exit code -1073741819 (0xC0000005)

Если это поможет: я использую PySide2 версии 2.0.0

1 Ответ

2 голосов
/ 15 марта 2019

QPushButton.setMenu не становится владельцем меню . Вам нужно родительское меню: menu = QMenu(yourParentQObjectDescendent). В вашем коде меню будет уничтожено после возврата из метода вложения.

0xC0000005 - нарушение прав доступа. Неправильно неразобранные QObjects и потомки являются частой причиной этого в PyQt.

...