gpt4 book ai didi

python - 调用 setParent 时 QMenu 显示不正确

转载 作者:太空宇宙 更新时间:2023-11-04 10:07:53 25 4
gpt4 key购买 nike

我想创建一个函数来构建一个可以动态添加到窗口菜单栏的上下文菜单。考虑以下用于添加简单 QMenu 的最小示例:

from PyQt5 import QtWidgets

class MainWindow(QtWidgets.QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
menu = QtWidgets.QMenu('Menu', parent=self)
act1 = menu.addAction('Action 1')
act2 = menu.addAction('Action 2')
self.menuBar().addMenu(menu)

app = QtWidgets.QApplication([])
window = MainWindow()
window.show()
app.exec_()

enter image description here

这按预期工作。请注意,需要为 QMenu 设置父项才能显示。


现在,如果我将菜单代码分解成它自己的函数并明确设置父项,我会得到以下结果。 这是怎么回事?

from PyQt5 import QtWidgets

def createMenu():
menu = QtWidgets.QMenu('Menu')
act1 = menu.addAction('Action 1')
act2 = menu.addAction('Action 2')
return menu

class MainWindow(QtWidgets.QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
menu = createMenu()
menu.setParent(self)
self.menuBar().addMenu(menu)

app = QtWidgets.QApplication([])
window = MainWindow()
window.show()
app.exec_()

enter image description here

最佳答案

您调用 setParent 的方式会重置窗口标志,因此请改为:

    menu.setParent(self, menu.windowFlags())

关于python - 调用 setParent 时 QMenu 显示不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40000081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com