使用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版
答案 0 :(得分:2)
QPushButton.setMenu
does not take ownership of the menu。您需要将菜单设为menu = QMenu(yourParentQObjectDescendent)
的父项。在您的代码中,封闭方法返回后,菜单将被破坏。
0xC0000005是访问冲突。在PyQt中,将非父对象的QObject和子代错误地导致了错误。