JPF*_*oia 3 python linux macos pyqt
我正在尝试将我的PyQt程序移植到Mac OS.我是在Linux上开发的.
PyQt(4)安装在2台计算机上,使用python 3.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)
Run Code Online (Sandbox Code Playgroud)
在Linux上,"设置"条目完美地显示在菜单栏中,并打开设置窗口.但是,在Mac OS上,不显示"设置"条目.根本不显示.所有其他条目(文件,编辑,视图等)都正确显示,但不是"设置".并且没有例外.
我被困在这里,我从未使用过Mac OS,所以我甚至不知道从哪里开始调试.
你有什么建议吗?
编辑:
我也试过了
#显示设置窗口的操作self.settingsAction = QtGui.QAction('Preferences',self)self.settingsAction.triggered.connect(lambda:Settings(self))
...Some code...
# Menu entry for the settings
self.menubar.addAction(self.settingsAction)
Run Code Online (Sandbox Code Playgroud)
Gre*_*reg 10
Mac有关于菜单栏的奇怪行为.请记住,mac菜单栏显示在最顶层的系统菜单栏中,而不是像Windows或Linux机器上那样显示在窗口中.一种解决方案是使用非原生菜单栏,因此它出现在类似于Windows或Linux机器的窗口中.
menubar = self.menuBar()
menubar.setNativeMenuBar(False)
Run Code Online (Sandbox Code Playgroud)
此外,当在Mac上使用PyQt时,系统将拦截某些包含"退出","退出","设置","设置","首选项"以及可能还有一些其他命令的命令,并将其从菜单栏中删除因为它们是保留标签.如果菜单栏标题没有项目,它将不会显示,使其看起来好像您没有修改菜单栏.
#exit = QtGui.QAction( 'Exit', self ) #this fails on my system
exit = QtGui.QAction( 'SomethingElse', self ) #this displays on my system
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exit)
Run Code Online (Sandbox Code Playgroud)
我在这里找到了"退出"信息:http://python.6.x6.nabble.com/addAction-to-menubar-td1916296.html
此外,调用raise_()不会更改我的mac(Mavericks)上的菜单栏.我必须手动选择窗口(通过单击其他位置然后重新单击窗口)以获取正确的菜单栏以显示我的pyqt应用程序.
我希望这可以帮助其他人解决这些问题.