菜单项未显示在M上

2024-10-01 07:35:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将PyQt程序移植到Mac操作系统。我在Linux上开发的。在

PyQt(4)安装在这两台计算机上,使用python3.4。一切似乎都有效。这个程序在Linux计算机上运行得很好。我只是把它转移到mac电脑上,然后试着运行它。它运行着,除了一件事:

我有一个菜单项(在菜单栏中),用于程序的设置:

# Action to show a settings window
self.settingsAction = QtGui.QAction('Settings', self)
self.settingsAction.triggered.connect(lambda: Settings(self))

...Some code...

# Menu entry for the settings
self.menubar.addAction(self.settingsAction)

在Linux上,“Settings”条目完美地显示在菜单栏中,并打开Settings窗口。但是,在Mac OS上,设置项不显示。只是不显示。所有其他条目(文件、编辑、视图等)都会正确显示,但不会显示设置。也没有例外。在

我被困在这里,我从来没有使用过Mac操作系统,所以我甚至不知道从哪里开始调试。在

你有什么建议吗?在

编辑:

我也试过了

#显示设置窗口的操作 自我设置功能= QtGui.q动作(“偏好”,自我) self.settingsAction.触发.connect(lambda:设置(自身))

^{pr2}$

Tags: lambdaself程序编辑settingslinuxmac计算机
2条回答

谢谢@Greg。我想补充的是,在Mac上,菜单必须至少有一个操作,否则它不会显示。以下是对Mac的影响

Mac电脑对菜单栏有奇怪的行为。请记住,mac菜单栏显示在系统菜单栏的最顶端,而不是像在Windows或Linux机器上那样显示在窗口中。一种解决方案是使用非本机菜单栏,使其显示在窗口中,类似于Windows或Linux机器。在

menubar = self.menuBar()
menubar.setNativeMenuBar(False)

另外,当在mac上使用PyQt时,系统会截获某些包含单词“Quit”、“Exit”、“Setting”、“Settings”、“preferences”的命令,并将它们从菜单栏中删除,因为它们是保留标签。如果菜单栏标题没有项目,它将不会显示,使其看起来就像您没有修改菜单栏一样。在

^{pr2}$

我在这里找到了“退出”信息:http://python.6.x6.nabble.com/addAction-to-menubar-td1916296.html

另外,调用raise_ux()并不会改变我的mac(小牛)上的菜单栏。我必须手动选择窗口(通过单击其他地方,然后重新单击窗口)以获得正确的菜单栏,为我的pyqt应用程序显示。在

我希望这能帮助其他人解决这些问题。在

相关问题 更多 >