使用gi.repository在Python中实现系统托盘应用程序
发布时间:2024-01-16 03:08:24
在Python中使用gi.repository实现系统托盘应用程序,需要使用AppIndicator3模块。AppIndicator3是一个用于创建并控制系统托盘应用程序的库。下面是一个简单的使用例子:
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('AppIndicator3', '0.1')
from gi.repository import Gtk, Gio, AppIndicator3
class TrayApp:
def __init__(self):
self.app = AppIndicator3.Indicator.new("TrayApp", "path/to/icon.svg", AppIndicator3.IndicatorCategory.APPLICATION_STATUS)
self.app.set_status(AppIndicator3.IndicatorStatus.ACTIVE)
self.menu = Gtk.Menu()
self.create_menu_item("Item 1", self.on_menu_item_1)
self.create_menu_item("Item 2", self.on_menu_item_2)
self.menu.append(Gtk.SeparatorMenuItem())
self.create_menu_item("Quit", self.on_quit)
self.app.set_menu(self.menu)
Gtk.main()
def create_menu_item(self, label, action):
item = Gtk.MenuItem()
item.set_label(label)
item.connect("activate", action)
item.show()
self.menu.append(item)
def on_menu_item_1(self, widget):
print("Menu Item 1 clicked")
def on_menu_item_2(self, widget):
print("Menu Item 2 clicked")
def on_quit(self, widget):
Gtk.main_quit()
if __name__ == "__main__":
TrayApp()
在上面的代码中,TrayApp类创建一个系统托盘应用程序。首先,我们使用AppIndicator3.Indicator.new()方法创建一个新的托盘应用程序对象,并设置应用程序的属性,比如图标和类别。然后,我们创建一个Gtk.Menu对象,并使用create_menu_item()方法创建菜单项。菜单项包括一个标签和一个回调函数,当菜单项被点击时会调用回调函数。最后,我们设置应用程序的菜单,调用Gtk.main()进入主循环。
在on_menu_item_1()和on_menu_item_2()方法中,我们可以定义自己的操作,比如打开一个窗口或执行一些任务。在on_quit()方法中,我们调用Gtk.main_quit()来退出应用程序。
你需要将path/to/icon.svg替换为你自己的图标文件路径。此外,你还需要安装AppIndicator3库,可以使用以下命令:
sudo apt-get install gir1.2-appindicator3-0.1
在运行上面的代码之前请确保你已经安装了必要的依赖。然后,你可以运行代码,并在系统托盘中看到一个带有菜单的应用程序图标。点击菜单项时,对应的回调函数会被调用,并执行相关的操作。
需要注意的是,系统托盘应用程序使用Gtk.main()进入主循环,所以代码将一直运行直到应用程序退出。你可以通过在适当的地方调用Gtk.main_quit()来退出应用程序。
