📜  PyGTK-MenuBar,Menu和MenuItem(1)

📅  最后修改于: 2023-12-03 15:18:45.965000             🧑  作者: Mango

PyGTK-MenuBar,Menu和MenuItem介绍

1. PyGTK简介

PyGTK是使用Python编写的GUI库,用于创建使用GTK+工具包编写的高级图形界面。PyGTK提供了一个简单的方式来设计和编写交互式GUI应用程序,它的API完全参照了GTK的特性。

GTK+是一种大型、跨平台的图形工具包,是开发Linux/Unix桌面应用程序的首选工具包。 GTK 是GNU通用公共许可证下发布的自由软件,可以是商业软件、封闭源代码软件的组成部分或者是其他开源软件的一个组成部分。GTK+被广泛应用于GNOME桌面环境、XFCE桌面环境、GIMP、Inkscape、Audacity等数以千计的Linux/Unix应用程序中。

2. MenuBar介绍

MenuBar(菜单栏)是一种图形用户界面,它通常包含一个水平或垂直的列表,显示了可以用于交互的菜单列表。在PyGTK中,我们可以使用gtk.MenuBar类创建一个MenuBar对象。

MenuBar对象可以包含多个Menu对象,每个Menu对象表示一个下拉菜单。

3. Menu介绍

Menu(菜单)是一个下拉列表,可以是水平的(MenuBar)或垂直的(PopupMenu)。在PyGTK中,我们可以使用gtk.Menu类创建一个Menu对象。

Menu对象可以包含多个MenuItem对象,每个MenuItem对象表示一个菜单项。

4. MenuItem介绍

MenuItem(菜单项)是菜单中的一个选项。在PyGTK中,我们可以使用gtk.MenuItem类创建一个MenuItem对象。

MenuItem对象可以有一个标签和一个绑定到其激活事件的回调函数。标签可以是带有文本或图像的任何类型的小部件,通常是一个gtk.Label或gtk.Image。

5. 代码示例

下面是一个简单的PyGTK程序,它创建一个MenuBar,其中包含了两个Menu,每个Menu包含若干个MenuItem。

import gtk

def on_menuitem_activate(widget, data=None):
    print widget.get_label(), 'was clicked'

def create_menu_item(label):
    item = gtk.MenuItem(label)
    item.connect('activate', on_menuitem_activate)
    return item

def create_menu():
    menu = gtk.Menu()

    item_open = create_menu_item('Open')
    item_save = create_menu_item('Save')
    item_exit = create_menu_item('Exit')

    menu.append(item_open)
    menu.append(item_save)
    menu.append(gtk.SeparatorMenuItem())
    menu.append(item_exit)

    menu.show_all()

    return menu

def create_menus():
    menubar = gtk.MenuBar()

    menu_file = gtk.Menu()
    item_file = gtk.MenuItem('File')
    item_file.set_submenu(menu_file)

    menu_edit = gtk.Menu()
    item_edit = gtk.MenuItem('Edit')
    item_edit.set_submenu(menu_edit)

    menubar.append(item_file)
    menubar.append(item_edit)

    menu_file.append(create_menu_item('New'))
    menu_file.append(create_menu_item('Open'))
    menu_file.append(create_menu_item('Save'))
    menu_file.append(create_menu_item('Save As...'))
    menu_file.append(gtk.SeparatorMenuItem())
    menu_file.append(create_menu_item('Exit'))

    menu_edit.append(create_menu_item('Cut'))
    menu_edit.append(create_menu_item('Copy'))
    menu_edit.append(create_menu_item('Paste'))

    menubar.show_all()

    return menubar

def main():
    window = gtk.Window()
    window.connect('destroy', gtk.main_quit)

    vbox = gtk.VBox()
    vbox.pack_start(create_menus(), False, False, 0)

    window.add(vbox)
    window.show_all()

    gtk.main()

if __name__ == '__main__':
    main()

这个程序会创建一个MenuBar,其中包含两个Menu:File和Edit。每个Menu包含若干个MenuItem。

当用户单击一个MenuItem时,绑定到MenuItem激活事件的回调函数on_menuitem_activate()将被调用。这个回调函数会打印出哪个MenuItem被单击了。

6. 总结

PyGTK是一个灵活而强大的GUI库,可以用于创建交互式的高级图形用户界面。MenuBar,Menu和MenuItem是PyGTK的三个基本组件,它们可以帮助我们创建各种各样的菜单。如果你想要深入了解PyGTK,请查看GTK文档或PyGTK文档。