2014-07-13 42 views
0

有沒有人知道如何評論MenuItems在pygtk?PYGTK菜單欄熱鍵標籤

Menubar hotkey label example on Firefox

我想補充ALT+F4要退出的權利。

任何幫助,非常感謝。

#!/usr/bin/env python 

import gtk 

class MenuBar(gtk.Window): 
    def __init__(self): 
    super(MenuBar, self).__init__() 
    self.set_position(gtk.WIN_POS_CENTER) 
    self.set_title("MenuBar") 
    self.set_size_request(320, 75) 
    self.set_keep_above(False) 
    self.connect("destroy", gtk.main_quit, "WM destroy") 

    mb = gtk.MenuBar() 
    filemenu = gtk.Menu() 
    filem = gtk.MenuItem("File") 
    filem.set_submenu(filemenu) 

    exit = gtk.MenuItem("Exit") 
    exit.connect("activate", gtk.main_quit) 
    filemenu.append(exit) 
    mb.append(filem) 

    vbox = gtk.VBox(False, 0) 
    vbox.pack_start(mb, False, False, 0) 
    self.add(vbox) 

    label = gtk.Label('An easy, but simple menubar!') 
    vbox.pack_start(label, False, False, 10) 
    self.show_all() 

MenuBar() 
gtk.main() 

回答

2

我剛剛碰到同樣的問題(好吧,幾天前)。從我所瞭解到的,有一個新的抽象層次調用GtkActionGroup。

因此,執行菜單的'傳統'(或舊:)方式是通過逐個定義項目並附加處理程序來定義它們的方式(和我一樣)。這工作正常,直到你遇到加速器的必要性。

'新'方法是定義你的程序中需要的所有動作(與你將如何激活它們無關),按相關函數進行分組(然後'分組'),然後將每個菜單項連接到相應的動作。這個方便,在習慣了之後,因爲它意味着你不必爲工具欄重複所有的工作。您只需定義每個工具按鈕,並將其鏈接到相同的操作。你只需要定義一次動作(而不是一次快捷方式,一次在菜單中,一次在工具欄中,誰知道還有其他什麼地方)。

我知道這是因爲gtk維護一個全球加速器地圖。

http://faq.pygtk.org/index.py?req=show&file=faq11.008.htp僅顯示如何創建操作。 http://python-gtk-3-tutorial.readthedocs.org/en/latest/menus.html是如何製作菜單的更完整(也是最複雜的)示例。

就像gtktextviews和gtktreeviews一樣,菜單並沒有變得簡單......但它主要是一個人對變化的抵制。