为了账号安全,请及时绑定邮箱和手机立即绑定

MacO 上的 PyQt5。添加到 QMainWindow 的自定义 QMenuBar 不可点击

MacO 上的 PyQt5。添加到 QMainWindow 的自定义 QMenuBar 不可点击

人到中年有点甜 2023-07-27 15:45:49
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())我想用 PyQt 5.15 为 MacOs 10.15.6 上的窗口制作一个菜单栏我使用 QMenuBar 类作为自定义菜单栏,在“文件”菜单下创建了一些子菜单并将其添加到 QMainWindow 中,我可以看到全局菜单栏创建在显示屏顶部,就像其他 MacO 一样。但是创建的全局菜单栏不可单击。我单击了它,但它没有显示“文件”菜单下方的子菜单。但是这种方式使用下面的“setNativeMenuBar(False)”可以像 Windows 应用程序一样正常工作,但我想使用本机 MacOs 菜单栏QMainWindow.menuBar() and QMainWindow.setNativeMenuBar(False)这是图像。https://i.stack.imgur.com/hv0VA.jpg
查看完整描述

2 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

# 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)


查看完整回答
反对 回复 2023-07-27
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

这可能有助于 PyQt5.QtWidgets import QMenuBar

Mainmenu=self.menuBar();# 创建菜单栏小部件

Filemenu=Mainmenu.addMenu('file');#这将文件添加到菜单栏

Editmenu=Mainmenu.addMenu('Edit');#这将编辑添加到菜单栏


查看完整回答
反对 回复 2023-07-27
  • 2 回答
  • 0 关注
  • 129 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信