PyGTKでシステムトレイのアイコンの隣にポップアップウィンドウを作成する(前半)
システムトレイのアイコンをクリックしたときにメニューを表示するのは簡単で、表示位置をアイコンに合わせることもできる(詳しくは「PyGTKでシステムトレイを使用してメニューを表示する」を参照)。しかし、デスクトップ環境のパネルに配置する音量調整のアプレットのように、隣にGUI部品(を含む小さなウィンドウ)を表示することは簡単にはいかない。
システムトレイアイコンの画面上の位置と大きさを取得
システムトレイアイコンの隣にウィンドウを作成することができるように(かは分からないが)、gtk.StatusIconオブジェクトにはget_geometry()というメンバ関数が用意されている。
get_geometry()が返すタプルの中身について
このメンバ関数が返すのは3つの要素(以下それぞれscreen,area,orientationとする)を含むタプルとなる。これらはシステムトレイアイコンの隣にウィンドウを作成する上で役に立つ。
screen(gtk.gdk.Screen)
ウィンドウシステムにおける「画面」に関する情報(解像度など)を保持している。例えばscreen.get_width()では画面の幅のピクセル数が得られる。
area(gtk.gdk.Rectangle)
ウィンドウシステムの画面上において、どの座標(area.x,area.y)においてどの領域サイズ(area.width,area.height)でシステムトレイアイコンが描画されているかのデータを持っている。
ポップアップウィンドウ側の処理
作成されるウィンドウ側では、上の情報をもとに計算したサイズと座標を用いてgtk.Windowオブジェクトのメンバ関数resize()やmove()でサイズと位置を調整してから表示する。
(事前にgtk.StatusIcon.get_geometry()の結果よりx, y, width, heightを計算しておく) self.win = gtk.Window(gtk.WINDOW_POPUP) self.win.resize(width, height) self.win.move(x, y) self.win.show_all()
(「PyGTKでシステムトレイのアイコンの隣にポップアップウィンドウを作成する(後半)」に続く)
関連記事:
- PyGTKでシステムトレイを使用してメニューを表示する
- PyGTKでシステムトレイのアイコンを切り換える(前半)
- PyGTKでシステムトレイのアイコンを切り換える(後半)
- システムトレイアイコンの並び方向に関する覚え書き(2009/2/10現在)
- PyGTKでシステムトレイのアイコンの隣にポップアップウィンドウを作成する(後半)
- システムトレイアイコンの隣のポップアップウィンドウにスライダーを表示する(前半)
- システムトレイアイコンの隣のポップアップウィンドウにスライダーを表示する(後半)
参考URL:
- PyGTK リファレンス: gtk.StatusIcon
- PyGTK リファレンス: gtk.Window
- PyGTK リファレンス: gtk.gdk.Screen
- PyGTK リファレンス: gtk.gdk.Rectangle
- PyGTK リファレンス: GTK Orientation Constants
使用したバージョン:
- Python 2.5.2
- PyGTK 2.13.0