QMenu отображается только на QPushButton при вызове QPushButton.menu()

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

    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.


person bariod    schedule 15.03.2019    source источник


Ответы (1)


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

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

person Community    schedule 15.03.2019