如何避免 PyQT5 Central Widget 覆盖 MenuBar?
How can I avoid having PyQT5 Central Widget covering up MenuBar?
我的 QMainWindow 中的中央小部件一直覆盖我想要的 QMenuBar。我该如何避免这种情况?
如果我注释掉按钮,我可以使用下面的代码看到菜单栏。
from PyQt5 import QtWidgets
class Test:
def __init__(self):
self.app = QtWidgets.QApplication([])
self.win = QtWidgets.QMainWindow()
self.win.resize(100,100)
menu_bar = QtWidgets.QMenuBar(self.win)
file_menu = menu_bar.addMenu('&File')
pb = QtWidgets.QPushButton('push me!')
# self.win.setCentralWidget(pb)
self.win.show()
self.app.exec()
if __name__ == '__main__':
Test()
QMainWindow 不应该根据这个设法将它们分开吗?
您必须使用 setMenuBar()
:
在 QMainWindow 中设置 QMenuBar
from PyQt5 import QtWidgets
class Test:
def __init__(self):
self.app = QtWidgets.QApplication([])
self.win = QtWidgets.QMainWindow()
self.win.resize(100,100)
menu_bar = QtWidgets.QMenuBar(self.win)
self.win.setMenuBar(menu_bar)
file_menu = menu_bar.addMenu('&File')
pb = QtWidgets.QPushButton('push me!')
self.win.setCentralWidget(pb)
self.win.show()
self.app.exec()
if __name__ == '__main__':
Test()
我的 QMainWindow 中的中央小部件一直覆盖我想要的 QMenuBar。我该如何避免这种情况?
如果我注释掉按钮,我可以使用下面的代码看到菜单栏。
from PyQt5 import QtWidgets
class Test:
def __init__(self):
self.app = QtWidgets.QApplication([])
self.win = QtWidgets.QMainWindow()
self.win.resize(100,100)
menu_bar = QtWidgets.QMenuBar(self.win)
file_menu = menu_bar.addMenu('&File')
pb = QtWidgets.QPushButton('push me!')
# self.win.setCentralWidget(pb)
self.win.show()
self.app.exec()
if __name__ == '__main__':
Test()
QMainWindow 不应该根据这个设法将它们分开吗?
您必须使用 setMenuBar()
:
from PyQt5 import QtWidgets
class Test:
def __init__(self):
self.app = QtWidgets.QApplication([])
self.win = QtWidgets.QMainWindow()
self.win.resize(100,100)
menu_bar = QtWidgets.QMenuBar(self.win)
self.win.setMenuBar(menu_bar)
file_menu = menu_bar.addMenu('&File')
pb = QtWidgets.QPushButton('push me!')
self.win.setCentralWidget(pb)
self.win.show()
self.app.exec()
if __name__ == '__main__':
Test()