Jer*_*rth 6 python macos pyqt menubar osx-snow-leopard
我试图将一个项添加到一个简单的PyQt示例的应用程序菜单栏.但是,以下代码似乎根本不会改变菜单栏.菜单中唯一的项目是"Python".下面是大部分代码,减去导入和实例化.
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.resize(250, 150)
self.setWindowTitle('menubar')
self.modal = False
exit = QtGui.QAction( QtGui.QIcon('images/app_icon.png'), 'Exit', self )
exit.setShortcut('Ctrl+Q')
exit.setStatusTip('Exit application')
self.connect(exit, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))
menubar = self.menuBar()
file = menubar.addMenu('File')
file.addAction(exit)
Run Code Online (Sandbox Code Playgroud)
我也尝试创建一个新的QMenuBar
并使用该setMenuBar()
方法手动交换菜单栏.
上面代码片段中的任何明显错误?
我知道这个问题是旧的,但因为我是坚持了同样的问题,我发现,因为我是创建操作退出应用程序,因此这个动作被保留在OSX上的应用程序菜单,文件菜单上没有出现.当我在同一菜单上创建一个新动作时,它变得可用.这适用于其他操作系统使用相同的方法:
self.menubar = self.menuBar()
Run Code Online (Sandbox Code Playgroud)
这是在QMainWindow对象中创建的.
希望这有助于任何人!
在Mac上使用PyQt时,系统会拦截某些包含单词“ Quit”或“ Exit”的命令,并将它们从菜单栏中删除,因为它们存在于其他位置。如果菜单栏标题中没有项目,则不会显示它,使其看起来好像您尚未修改菜单栏。
#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)
另外,调用raise_()不会更改Mac上的菜单栏。如果我使用raise_(),我必须手动选择窗口(通过单击其他位置然后重新单击),以获取正确的菜单栏以显示给我的pyqt应用程序。
还要记住,mac菜单栏显示在系统菜单栏中,而不是在Windows或Linux计算机上的窗口中。正如Levi501和Swdev所建议的那样,这引出了另一种解决方案。那就是使用出现在窗口中的非本地菜单,如下所示:
menubar = self.menuBar()
menubar.setNativeMenuBar(False)
Run Code Online (Sandbox Code Playgroud)
作为大量使用Windows和Linux的人,这对我的项目来说意义更大。
我在这里找到“退出”信息:http : //python.6.x6.nabble.com/addAction-to-menubar-td1916296.html
我没有在这台机器上安装 PyQt 来测试这一点,但我认为在 Mac 上该QMainWindow.menuBar()
函数不会返回应用程序范围的菜单栏。
您可以尝试创建一个菜单栏,例如:
menubar = QtGui.MenuBar()
Run Code Online (Sandbox Code Playgroud)
我将此基于QMainWindow.menuBar()
此处函数的文档:
http://doc.qt.io/qt-4.8/qmainwindow.html#menuBar
您还可以查看本页上Mac OS X 上标有 QMenuBar 的部分:
http://doc.qt.io/qt-4.8/qmenubar.html#details
希望有帮助!
归档时间: |
|
查看次数: |
6409 次 |
最近记录: |