使用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来创建自定义的菜单栏。
