欢迎访问宙启技术站
智能推送

使用gi.repository.GioMenu()在Python中构建菜单栏

发布时间:2024-01-02 14:11:29

在Python中,可以使用gi.repository.GioMenu()模块来构建菜单栏。GioMenu提供了创建和管理菜单的功能,它可以创建菜单项、子菜单和分隔符等。

下面是一个使用gi.repository.GioMenu构建菜单栏的简单示例:

import gi
gi.require_version('Gtk', '3.0')
gi.require_version('Gio', '2.0')
from gi.repository import Gtk, Gio

def on_menuitem_click(menuitem):
    label = menuitem.get_label()
    print("Clicked on", label)

def create_menu():
    # 创建      菜单
    menu = Gio.Menu()

    # 创建一个菜单项
    item1 = Gio.MenuItem.new("Item 1", "item1")
    item2 = Gio.MenuItem.new("Item 2", "item2")

    # 添加子菜单项
    submenu = Gio.Menu.new()
    subitem1 = Gio.MenuItem.new("Sub Item 1", "subitem1")
    subitem2 = Gio.MenuItem.new("Sub Item 2", "subitem2")
    submenu.append_item(subitem1)
    submenu.append_item(subitem2)

    # 将子菜单项添加到菜单项中
    item2.set_submenu(submenu)

    # 创建分隔符
    separator = Gio.SeparatorMenuItem.new()

    # 将菜单项添加到菜单中
    menu.append_item(item1)
    menu.append_item(item2)
    menu.append_item(separator)

    # 连接菜单项点击事件
    item1.connect("activate", on_menuitem_click)
    item2.connect("activate", on_menuitem_click)
    subitem1.connect("activate", on_menuitem_click)
    subitem2.connect("activate", on_menuitem_click)

    return menu

def main():
    # 创建一个窗口和按钮来显示菜单
    window = Gtk.Window()
    button = Gtk.MenuButton()
    button.set_label("Menu")

    # 创建菜单
    menu = create_menu()

    # 设置按钮显示的菜单
    button.set_menu_model(menu)

    # 将按钮添加到窗口
    box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
    box.pack_start(button, True, True, 0)
    window.add(box)

    window.connect("destroy", Gtk.main_quit)
    window.show_all()
    Gtk.main()

if __name__ == "__main__":
    main()

在此示例中,我们创建了一个简单的窗口,并在窗口中添加一个按钮。菜单通过create_menu函数创建,并将其设置为按钮的菜单模型。菜单中包含了一个 菜单项"Item 1"和"Item 2",以及一个包含两个子菜单项的子菜单。

我们还将菜单项的activate信号连接到on_menuitem_click函数,以便在点击菜单项时打印出相应的标签。

最后,在主函数中,我们显示了窗口和运行了Gtk.main()来启动GTK的主事件循环。

这只是一个使用gi.repository.GioMenu构建菜单栏的简单示例,你可以根据自己的需求进行修改和扩展。希望这个例子能够帮助你开始使用GioMenu来创建自定义的菜单栏。