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.setMenu
does not take ownership of the menu。您需要为菜单设置父级:menu = QMenu(yourParentQObjectDescendent)
。在您的代码中,菜单将在封闭方法 returns.
之后被销毁
0xC0000005 是访问冲突。在 PyQt 中,错误的无父 QObject 和后代是它的常见原因。
使用 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.setMenu
does not take ownership of the menu。您需要为菜单设置父级:menu = QMenu(yourParentQObjectDescendent)
。在您的代码中,菜单将在封闭方法 returns.
0xC0000005 是访问冲突。在 PyQt 中,错误的无父 QObject 和后代是它的常见原因。