2016-01-12 60 views
0

在試圖將操作項添加到默認OS X菜單時,我遵循the documentation。下面是一個小腳本,運行時產生:無法將操作添加到OS X首選項菜單

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'

回答

0

簡單的答案:我的錯誤觀念是,當事物被吸入到標準OS X「首選項」中時,它們都會被附加到「首選項」下的菜單中。實際情況是,只有一個動作與首選項相關聯,開發人員需要建立所需的系統。通過查看「首選項」與其他應用程序的關係,我發現了這一點:它們總是創建一些特定於應用程序的窗口。

所以,沒有道理,這是一個實現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) 
相關問題