pygtk-menu使用itemfactory

系统 1739 0
    #!/usr/bin/env python

# example itemfactory.py

import pygtk
pygtk.require(’2.0’)
import gtk

class ItemFactoryExample:
# Obligatory basic callback
	def print_hello(self, w, data):
		print "Hello, World!"

		# This is the ItemFactoryEntry structure used to generate new menus.
		# Item 1: The menu path. The letter after the underscore indicates an
		# accelerator key once the menu is open.
		# Item 2: The accelerator key for the entry
		# Item 3: The callback.
		# Item 4: The callback action. This changes the parameters with
		# which the callback is called. The default is 0.
		# Item 5: The item type, used to define what kind of an item it is.
		# Here are the possible values:

		# NULL -> "<Item>"
		# "" -> "<Item>"
		# "<Title>" -> create a title item
		# "<Item>" -> create a simple item
		# "<CheckItem>" -> create a check item
		# "<ToggleItem>" -> create a toggle item
		# "<RadioItem>" -> create a radio item
		# <path> -> path of a radio item to link against
		# "<Separator>" -> create a separator
		# "<Branch>" -> create an item to hold sub items (optional)
		# "<LastBranch>" -> create a right justified branch

	def get_main_menu(self, window):
		accel_group = gtk.AccelGroup()

		# This function initializes the item factory.
		# Param 1: The type of menu - can be MenuBar, Menu,
		# or OptionMenu.
		# Param 2: The path of the menu.
		# Param 3: A reference to an AccelGroup. The item factory sets up
		# the accelerator table while generating menus.
		item_factory = gtk.ItemFactory(gtk.MenuBar, "<main>", accel_group)

		# This method generates the menu items. Pass to the item factory
		# the list of menu items
		item_factory.create_items(self.menu_items)

		# Attach the new accelerator group to the window.
		window.add_accel_group(accel_group)

		# need to keep a reference to item_factory to prevent its destruction
		self.item_factory = item_factory
		# Finally, return the actual menu bar created by the item factory.
		return item_factory.get_widget("<main>")

	def __init__(self):
		self.menu_items = (
		( "/_File", None, None, 0, "<Branch>" ),
		( "/File/_New", "<control>N", self.print_hello, 0, None ),
		( "/File/_Open", "<control>O", self.print_hello, 0, None ),
		( "/File/_Save", "<control>S", self.print_hello, 0, None ),
		( "/File/Save _As", None, None, 0, None ),
		( "/File/sep1", None, None, 0, "<Separator>" ),
		( "/File/Quit", "<control>Q", gtk.main_quit, 0, None ),
		( "/_Options", None, None, 0, "<Branch>" ),
		( "/Options/Test", None, None, 0, None ),
		( "/_Help", None, None, 0, "<LastBranch>" ),
		( "/_Help/About", None, None, 0, None ),
		)
		window = gtk.Window(gtk.WINDOW_TOPLEVEL)
		window.connect("destroy", lambda w: gtk.main_quit(), "WM destroy")
		window.set_title("Item Factory")
		window.set_size_request(300, 200)

		main_vbox = gtk.VBox(False, 1)
		main_vbox.set_border_width(1)
		window.add(main_vbox)
		main_vbox.show()

		menubar = self.get_main_menu(window)

		main_vbox.pack_start(menubar, False, True, 0)
		menubar.show()
		window.show()

def main():
	gtk.main()
	return 0

if __name__ == "__main__":
	ItemFactoryExample()
	main()

  

 

pygtk-menu使用itemfactory
 

 
 

pygtk-menu使用itemfactory


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论