質問: python、gir、gtk3を使用したインジケーターの作成 インジケーターを使用する必要があるアプリケーションを作成しています。過去にpygtkとgtk2を使用してこれを実行しました。このドキュメントを参照として使用します: https://wiki.ubuntu.com/desktopexperienceteam/applicationindicators#python_version ただし、それはpygtkおよびgtk2でのみ機能します。それ以来、状況は変化しており、それがどのように機能するかを学ぶために、良いドキュメント、チュートリアル、または良い例を見つける必要があります。また、前述のドキュメントでまったく説明されていないことの1つは、インジケーターにサブメニューを追加する方法です。同じツールを使用してカテゴリインジケータを統合する方法と同様に、誰かがこれに何らかの光を当てることができることを願っています。ありがとう。
回答: これは、設定ウィンドウ、メインウィンドウ、アプリインジケーターを備えた愚かなシンプルなscaffoldアプリケーションです。#!/usr/bin/env python3.3 from gi.repository import gtk from gi.repository import appindicator3 as appindicator class myindicator: def __init__(self, root): self.app = root self.ind = appindicator.indicator.new( self.app.name, "indicator-messages", appindicator.indicatorcategory.application_status) self.ind.set_status (appindicator.indicatorstatus.active) self.menu = gtk.menu() item = gtk.menuitem() item.set_label("main window") item.connect("activate", self.app.main_win.cb_show, '') self.menu.append(item) item = gtk.menuitem() item.set_label("configuration") item.connect("activate", self.app.conf_win.cb_show, '') self.menu.append(item) item = gtk.menuitem() item.set_label("exit") item.connect("activate", self.cb_exit, '') self.menu.append(item) self.menu.show_all() self.ind.set_menu(self.menu) def cb_exit(self, w, data): gtk.main_quit() class myconfigwin(gtk.window): def __init__(self, root): super().__init__() self.app = root self.set_title(self.app.name + ' config window') def cb_show(self, w, data): self.show() class mymainwin(gtk.window): def __init__(self, root): super().__init__() self.app = root self.set_title(self.app.name) def cb_show(self, w, data): self.show() class myapp(gtk.application): def __init__(self, app_name): super().__init__() self.name = app_name self.main_win = mymainwin(self) self.conf_win = myconfigwin(self) self.indicator = myindicator(self) def run(self): gtk.main() if __== '__main__': app = myapp('scaffold') app.run()