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

在python中使用gi.repository.GioMenu()创建带图标的菜单栏

发布时间:2024-01-02 14:16:52

在Python中,可以使用gi.repository.GioMenu()来创建带有图标的菜单栏,并添加菜单项。以下是一个示例代码:

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

class MenuExample(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="Menu Example")

        self.set_default_size(300, 200)
        self.set_border_width(10)

        # 创建菜单
        menu = Gio.Menu()
        
        # 创建菜单项
        item1 = Gio.MenuItem.new("Item 1", "item1-id")
        item1.connect("activate", self.on_menu_item_clicked)
        item1.set_attribute_value("icon", Gio.Icon.new_for_string("icons/item1.png"))
        menu.append_item(item1)

        item2 = Gio.MenuItem.new("Item 2", "item2-id")
        item2.connect("activate", self.on_menu_item_clicked)
        item2.set_attribute_value("icon", Gio.Icon.new_for_string("icons/item2.png"))
        menu.append_item(item2)

        item3 = Gio.MenuItem.new("Item 3", "item3-id")
        item3.connect("activate", self.on_menu_item_clicked)
        item3.set_attribute_value("icon", Gio.Icon.new_for_string("icons/item3.png"))
        menu.append_item(item3)

        # 创建菜单按钮
        button = Gtk.MenuButton()
        button.set_menu_model(menu)
        button.set_direction(Gtk.ArrowType.DOWN)
        self.add(button)

    def on_menu_item_clicked(self, menu_item):
        item_id = menu_item.get_detailed_action_name()
        print("Item clicked: ", item_id)

win = MenuExample()
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()

上述代码创建了一个图标菜单栏,其中菜单项有三个:Item 1、Item 2和Item 3。每个菜单项都设置了响应的图标。当点击菜单项时,会调用on_menu_item_clicked方法,并打印出菜单项的ID。

请确保在您的代码中将图标文件放置在正确的路径上,并且已正确安装了Gtk3和GObject Introspection库。

希望以上代码对你有所帮助!