好不容易找到的文章:http://redino.net/blog/2014/05/qt-qwidget-add-menu-bar/
需求是我的窗口左侧要做一块面板,
菜单并不想延伸过去,默认的菜单QMainWindow是从窗口左上角开始
为了自定义菜单位置,可以看下文章中的案例
from PyQt5.Qt import *
import sys
# 定义了redo方法
def redoClicked():
msg_box = QMessageBox()
msg_box.setText('Redo will be performed')
msg_box.exec_()
# 创建app
app = QApplication(sys.argv)
# 创建widget
window = QWidget()
# 创建layout
vbox = QVBoxLayout()
# 创建menubar
menu_bar = QMenuBar()
# 添加菜单File
file_menu = menu_bar.addMenu('File')
# 添加菜单Edit
edit_menu = menu_bar.addMenu('Edit')
# 添加退出Action
exit_action = QAction('Exit', window)
# 连接点击信号到exit
exit_action.triggered.connect(exit)
# 给File菜单添加退出action
file_menu.addAction(exit_action)
# 再创建一个Redo Action
redo_action = QAction('Redo', window)
# 关联点击信号到redoClicked
redo_action.triggered.connect(redoClicked)
# 给edit菜单添加redo action
edit_menu.addAction(redo_action)
# 给窗口设置layout
window.setLayout(vbox)
# 给layout添加菜单组件
vbox.addWidget(menu_bar)
# 显示窗口
window.show()
# 退出
app.exec_()