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