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

时间:2019-03-15 08:32:01

标签: python-3.x qt pyside2

使用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版

1 个答案:

答案 0 :(得分:2)

QPushButton.setMenu does not take ownership of the menu。您需要将菜单设为menu = QMenu(yourParentQObjectDescendent)的父项。在您的代码中,封闭方法返回后,菜单将被破坏。

0xC0000005是访问冲突。在PyQt中,将非父对象的QObject和子代错误地导致了错误。