[英]PyQt5 on MacOs. Custom QMenuBar added to QMainWindow is not clickable
class MenuBarWidget(QMenuBar):
sig_new_file = pyqtSignal()
sig_open_file = pyqtSignal()
sig_save_file = pyqtSignal()
sig_page_setup = pyqtSignal()
sig_print = pyqtSignal()
sig_exit = pyqtSignal()
sig_status_bar = pyqtSignal(bool)
def __init__(self):
super().__init__()
self.init_menu_file()
# self.init_menu_edit()
# self.init_menu_format()
# self.init_menu_view()
# self.init_menu_help()
# self.set_all_text()
def init_menu_file(self):
self.act_new_file = QAction('File', self)
self.act_new_file.setShortcut(QKeySequence('Ctrl+N'))
self.act_new_file.triggered.connect(lambda: self.sig_new_file.emit())
self.act_open_file = QAction('Open', self)
self.act_open_file.setShortcut(QKeySequence('Ctrl+O'))
self.act_new_file.triggered.connect(lambda: self.sig_open_file.emit())
self.act_save_file = QAction('Save', self)
self.act_save_file.setShortcut(QKeySequence('Ctrl+S'))
self.act_save_file.triggered.connect(lambda: self.sig_save_file.emit())
self.act_print = QAction('Print', self)
self.act_print.setShortcut(QKeySequence('Ctrl+P'))
self.act_print.triggered.connect(lambda: self.sig_print.emit())
self.act_quit = QAction('Quit', self)
self.act_quit.setShortcut(QKeySequence('Ctrl+Q'))
self.act_quit.triggered.connect(lambda: self.sig_exit.emit())
self.menu_file = self.addMenu('&File')
self.menu_file.addAction(self.act_new_file)
self.menu_file.addAction(self.act_open_file)
self.menu_file.addAction(self.act_save_file)
self.menu_file.addSeparator()
self.menu_file.addAction(self.act_print)
self.menu_file.addSeparator()
self.menu_file.addAction(self.act_quit)
if __name__ == '__main__':
class Form(QMainWindow):
sig_new_file = pyqtSignal()
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.resize(640, 480)
self.setWindowTitle('MenuBar')
self.menu = MenuBarWidget()
self.setMenuBar(self.menu)
app = QApplication(sys.argv)
form = Form()
form.show()
exit(app.exec_())
I wanted to make a menubar for a window on MacOs 10.15.6 with PyQt 5.15我想用 PyQt 5.15 在 MacOs 10.15.6 上为窗口制作一个菜单栏
I used QMenuBar class for custom menubar ,created some submenus under 'File' Menu and added it to QMainWindow and I can see global menubar is created on the top of display just like the other MacOs.我将 QMenuBar 类用于自定义菜单栏,在“文件”菜单下创建了一些子菜单并将其添加到 QMainWindow 中,我可以看到全局菜单栏就像其他 MacO 一样在显示屏顶部创建。
I tried both我都试过了
QMenuBar() , QMainWIndow.setMenuBar()
sub_menu = QAction('Someting else..',self)
fileMenu = QMainWindow.menuBar().addMenu('File')
fileMenu.addAction(sub_menu)
However created global menubar is not clickable.但是创建的全局菜单栏是不可点击的。 I clicked it but it does not show submenus below 'File' Menu.
我点击了它,但它没有在“文件”菜单下方显示子菜单。
But This way using 'setNativeMenuBar(False)' below works fine like Windows Applications but I wanna use native MacOs menubar但是这种方式使用下面的“setNativeMenuBar(False)”就像 Windows 应用程序一样工作正常,但我想使用原生 MacOs 菜单栏
QMainWindow.menuBar() and QMainWindow.setNativeMenuBar(False)
Here are images.这里是图像。
https://imgur.com/a/Yp6c9YW https://imgur.com/a/Yp6c9YW
This might help from PyQt5.QtWidgets import QMenuBar这可能有助于从 PyQt5.QtWidgets 导入 QMenuBar
Mainmenu=self.menuBar();# creates a menu bar widget Mainmenu=self.menuBar();# 创建一个菜单栏小部件
Filemenu=Mainmenu.addMenu('file');#this adds file to menubar Filemenu=Mainmenu.addMenu('file');#这将文件添加到菜单栏
Editmenu=Mainmenu.addMenu('Edit');#this adds edit to menubar Editmenu=Mainmenu.addMenu('Edit');#这将编辑添加到菜单栏
# This worked on PyQt5 on macOS Big Sur (ver 11.6)
# it is the result on painful trial and error
# and reading the Qt Docs
def _createMenuBar(self):
menuBar = self.menuBar()
# File menu
fileMenu = menuBar.addMenu("File")
fileMenu.addAction("New")
save = QAction("Save",self)
save.setShortcut("Ctrl+S")
fileMenu.addAction(save)
quit = QAction("\0Quit",self)
quit.setShortcut("Ctrl+Q")
fileMenu.addAction(quit)
# Edit menu
editMenu = menuBar.addMenu("Edit")
editMenu.addAction("Copy")
editMenu.addAction("Paste")
# Help menu
helpMenu=menuBar.addMenu("Help")
helpMenu.addAction(self.helpContentAction)
helpMenu.addAction(self.aboutAction)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.