【问题标题】:QMenu only showing on QPushButton when calling QPushButton.menu()QMenu 仅在调用 QPushButton.menu() 时显示在 QPushButton
【发布时间】:2019-08-06 06:57:10
【问题描述】:

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

【问题讨论】:

    标签: python-3.x qt pyside2


    【解决方案1】:

    QPushButton.setMenudoes not take ownership of the menu。您需要父菜单:menu = QMenu(yourParentQObjectDescendent)。在您的代码中,菜单将在封闭方法返回后被销毁。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多