1
我想创建一个函数来构建一个可以动态添加到窗口菜单栏的上下文菜单。请看下面的小例子,添加一个简单的QMenu:当setParent调用时,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_()
可正常工作。请注意,需要设置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_()
的伟大工程。我不知道有一个重载的'setParent'函数 – user3419537