无法向OS X“首选项”菜单添加操作

时间:2016-01-12 18:27:06

标签: python macos pyqt

在尝试将操作项添加到默认OS X菜单时,我跟随the documentation。下面是一个简短的脚本,在运行时会生成:

  

QMenu:没有为弹出菜单创建OSMenuRef

我(显然不够)的搜索没有透露任何关于下一步的真实线索,或者是否有可能这样做。

脚本:

from PyQt4.QtGui import QApplication
app = QApplication([])
from PyQt4 import QtGui
menu = QtGui.QMenuBar()
action = QtGui.QAction('Apref', app)
action.setMenuRole(QtGui.QAction.PreferencesRole)
menu.addAction(action)

详细说明:

  • OS X 10.10
  • Python 2.7
  • Qt版本:' 4.8.7'
  • SIP版本:' 4.16.9'
  • PyQt版本:' 4.11.4'

1 个答案:

答案 0 :(得分:0)

简单回答:我所误解的是,当事情被吸入标准OS X"偏好"时,它们都将被附加到"偏好"下的菜单中。实际情况是,只有一个操作与首选项相关联,开发人员需要构建所需的系统。我通过查看"偏好"与其他应用程序一起使用:它们总是创建一些特定于应用程序的窗口。

所以,没有ado,这是一个实现Preferences的最小脚本。我毫不怀疑有一种更标准的处理方式,但我想把它拿出来。

from PyQt4 import QtCore,QtGui
app = QtGui.QApplication([])

def pmake(*args, **kwargs):
    menu = QtGui.QMenu()
    menu.addAction('This is an action')
    result = menu.exec_(QtCore.QPoint(10,10))
    print 'result="{}"'.format(result)

pact = QtGui.QAction('Preferences', app)
pact.triggered.connect(pmake)
pact.setMenuRole(QtGui.QAction.PreferencesRole)
pmenu = QtGui.QMenu('Preferences')
pmenu.addAction(pact)
menu = QtGui.QMenuBar()
menu.addMenu(pmenu)