在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库。
希望以上代码对你有所帮助!
