2012-03-24 11 views
1

Python Gtk3バインディングを使用する小さなアプリケーションをPythonで作成しました。システムアイコンテーマからアプリケーションの負荷のアイコンの一部は、次のように:X11を使用しないPython Gtk3バインディングの使用

def get_icon(name): 
    from gi.repository import Gtk 
    icon_theme = Gtk.IconTheme() 
    if icon_theme.has_icon(name): 
     return icon_theme.load_icon("status-red", 32, 0) 

これは、私が欲しい、まさにん - アイコンをロードし、私にGdkPixbuf.Pixbufインスタンスが作成されます。

私のユニットテストを実行すると問題が発生します。私はこのコードをテストするテストを持っています。そして、テストが開発者マシン上で実行されていれば、すべて正常に動作します。

しかし、(CIプロセスの一環として)パッケージが構築される前に自動的にテストが実行され、アプリケーションパッケージはヘッドレスサーバー上に構築されます。だから私の質問は:IconTheme Gtk3からX11の実行を要求せずにクラスを使用する方法はありますか?

+2

アイコンテーマは常に「スクリーン」に関連付けられていますが、これはX11なしではやや難しいものです。私はXvfb内でテストを実行しようとします。 –

答えて

1

DISPLAYなしでX11に対してコンパイルされたgtk +を使用する方法はありません。

しかしtestsuiteは仮想フレームバッファを使ったXサーバであるxvfbの中でいつでも実行できます。既存の端末から実行する必要はありませんが、Xが必要です。

xvfb-run.sh python testsuite.py 
関連する問題