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

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

http://img.mukewang.com/64c220d800019b8306540525.jpg

人到中年有点甜
浏览 143回答 2
2回答

慕村9548890

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

慕尼黑8549860

这可能有助于 PyQt5.QtWidgets import QMenuBarMainmenu=self.menuBar();# 创建菜单栏小部件Filemenu=Mainmenu.addMenu('file');#这将文件添加到菜单栏Editmenu=Mainmenu.addMenu('Edit');#这将编辑添加到菜单栏
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python