QMenu 仅在调用 QPushButton.menu() 时显示在 QPushButton 上

QMenu only showing on QPushButton when calling QPushButton.menu()

使用 this 示例中的代码,我没有获得按钮上的菜单。它将只是一个简单的按钮。

    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

QPushButton.setMenudoes not take ownership of the menu。您需要为菜单设置父级:menu = QMenu(yourParentQObjectDescendent)。在您的代码中,菜单将在封闭方法 returns.

之后被销毁

0xC0000005 是访问冲突。在 PyQt 中,错误的无父 QObject 和后代是它的常见原因。