📄 ui_manager.py
字号:
#!/usr/bin/env python'''UI ManagerThe GtkUIManager object allows the easy creation of menusfrom an array of actions and a description of the menu hierarchy.'''# pygtk version: Maik Hertha <maik.hertha@berlin.de>import gobjectimport gtkdef activate_action(action): print 'Action "%s" activated' % action.get_name()def activate_radio_action(action, current): print 'Radio action "%s" selected'% current.get_name()entries = ( ( "FileMenu", None, "_File" ), # name, stock id, label ( "PreferencesMenu", None, "_Preferences" ), # name, stock id, label ( "ColorMenu", None, "_Color" ), # name, stock id, label ( "ShapeMenu", None, "_Shape" ), # name, stock id, label ( "HelpMenu", None, "_Help" ), # name, stock id, label ( "New", gtk.STOCK_NEW, # name, stock id "_New", "<control>N", # label, accelerator "Create a new file", # tooltip activate_action ), ( "Open", gtk.STOCK_OPEN, # name, stock id "_Open","<control>O", # label, accelerator "Open a file", # tooltip activate_action ), ( "Save", gtk.STOCK_SAVE, # name, stock id "_Save","<control>S", # label, accelerator "Save current file", # tooltip activate_action ), ( "SaveAs", gtk.STOCK_SAVE, # name, stock id "Save _As...", None, # label, accelerator "Save to a file", # tooltip activate_action ), ( "Quit", gtk.STOCK_QUIT, # name, stock id "_Quit", "<control>Q", # label, accelerator "Quit", # tooltip activate_action ), ( "About", None, # name, stock id "_About", "<control>A", # label, accelerator "About", # tooltip activate_action ), ( "Logo", "demo-gtk-logo", # name, stock id None, None, # label, accelerator "GTK+", # tooltip activate_action ),)toggle_entries = ( ( "Bold", gtk.STOCK_BOLD, # name, stock id "_Bold", "<control>B", # label, accelerator "Bold", # tooltip activate_action, True ), # is_active)( COLOR_RED, COLOR_GREEN, COLOR_BLUE) = range(3)color_entries = ( ( "Red", None, # name, stock id "_Red", "<control>R", # label, accelerator "Blood", COLOR_RED ), # tooltip, value ( "Green", None, # name, stock id "_Green", "<control>G", # label, accelerator "Grass", COLOR_GREEN ), # tooltip, value ( "Blue", None, # name, stock id "_Blue", "<control>B", # label, accelerator "Sky", COLOR_BLUE ), # tooltip, value)( SHAPE_SQUARE, SHAPE_RECTANGLE, SHAPE_OVAL,) = range(3)# GtkRadioActionEntryshape_entries = ( ( "Square", None, # name, stock id "_Square", "<control>S", # label, accelerator "Square", SHAPE_SQUARE ), # tooltip, value ( "Rectangle", None, # name, stock id "_Rectangle", "<control>R", # label, accelerator "Rectangle", SHAPE_RECTANGLE ), # tooltip, value ( "Oval", None, # name, stock id "_Oval", "<control>O", # label, accelerator "Egg", SHAPE_OVAL ), # tooltip, value)ui_info = \'''<ui> <menubar name='MenuBar'> <menu action='FileMenu'> <menuitem action='New'/> <menuitem action='Open'/> <menuitem action='Save'/> <menuitem action='SaveAs'/> <separator/> <menuitem action='Quit'/> </menu> <menu action='PreferencesMenu'> <menu action='ColorMenu'> <menuitem action='Red'/> <menuitem action='Green'/> <menuitem action='Blue'/> </menu> <menu action='ShapeMenu'> <menuitem action='Square'/> <menuitem action='Rectangle'/> <menuitem action='Oval'/> </menu> <menuitem action='Bold'/> </menu> <menu action='HelpMenu'> <menuitem action='About'/> </menu> </menubar> <toolbar name='ToolBar'> <toolitem action='Open'/> <toolitem action='Quit'/> <separator action='Sep1'/> <toolitem action='Logo'/> </toolbar></ui>'''class UIManagerDemo(gtk.Window): def __init__(self, parent=None): gtk.Window.__init__(self) try: self.set_screen(parent.get_screen()) except AttributeError: self.connect('destroy', lambda *w: gtk.main_quit()) self.set_title(self.__class__.__name__) self.set_border_width(0) actions = gtk.ActionGroup("Actions") actions.add_actions(entries) actions.add_toggle_actions(toggle_entries) actions.add_radio_actions(color_entries, COLOR_RED, activate_radio_action) actions.add_radio_actions(shape_entries, SHAPE_OVAL, activate_radio_action) ui = gtk.UIManager() ui.insert_action_group(actions, 0) self.add_accel_group(ui.get_accel_group()) try: mergeid = ui.add_ui_from_string(ui_info) except gobject.GError, msg: print "building menus failed: %s" % msg box1 = gtk.VBox(False, 0) self.add(box1) box1.pack_start(ui.get_widget("/MenuBar"), False, False, 0) label = gtk.Label("Type\n<alt>\nto start") label.set_size_request(200, 200) label.set_alignment(0.5, 0.5) box1.pack_start(label, True, True, 0) separator = gtk.HSeparator() box1.pack_start(separator, False, True, 0) box2 = gtk.VBox(False, 10) box2.set_border_width(10) box1.pack_start(box2, False, True, 0) button = gtk.Button("close") button.connect("clicked", lambda b, w=self: w.destroy()) box2.pack_start(button, True, True, 0) button.set_flags(gtk.CAN_DEFAULT) button.grab_default() self.show_all()def main(): UIManagerDemo() gtk.main()if __name__ == '__main__': main()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -