私はグラフ作成にMatplotlibを使用するPyGTK/Twistedアプリケーションを作成しています。 FigureCanvasGtkAggを使用して私のウィジェットにプロットを埋め込むのは簡単ですが、(プロット領域の外側にある)キャンバスの背景色が他のアプリケーションと同じではなく、 、伝説など)。MatplotlibのGTK Aggバックエンドでユーザーテーマを尊重する
グラフをユーザーが選択したGTKテーマに尊重する簡単な方法はありますか?
私はグラフ作成にMatplotlibを使用するPyGTK/Twistedアプリケーションを作成しています。 FigureCanvasGtkAggを使用して私のウィジェットにプロットを埋め込むのは簡単ですが、(プロット領域の外側にある)キャンバスの背景色が他のアプリケーションと同じではなく、 、伝説など)。MatplotlibのGTK Aggバックエンドでユーザーテーマを尊重する
グラフをユーザーが選択したGTKテーマに尊重する簡単な方法はありますか?
たとえば、pylab.figure(facecolor=SOME_COLOR, ...)
またはmatplotlib.rcParams['figure.facecolor'] = SOME_COLOR
などで設定できます。デフォルト値はhard-codedなので、MPLにGTKテーマを尊重するよう指示する方法はありません。
これはPyGTKでこれを行う方法の具体例です。この情報の一部は"Get colors of current gtk style"とgdk.Colorから収集されました。私はフォントなどを設定するまでは得ていませんが、これは必要な基本的なフレームワークを示しています。
はまず、次の関数を定義 :含むウィジェットが
def set_graph_appearance(container, figure):
"""
Given a GTK container and a Matplotlib "figure" object, this will set the
figure background colour to be the same as the normal colour of the
container.
"""
# "bg" is the background "style helper" object. It contains five different
# colours, for the five different widget states.
bg_style = container.get_style().bg[gtk.STATE_NORMAL]
gtk_color = (bg_style.red_float, bg_style.green_float, bg_style.blue_float)
figure.set_facecolor(gtk_color)
あなたはその後、(多分もmap-event
信号が、私は試していない)realize
信号に接続することができますが、再色のグラフです。作成:
graph_panel.connect('realize', set_graph_appearance, graph.figure)
(ここで、graph_panel
は、必要に応じてfigure
部材を有するFigureCanvasGTKAgg
のサブクラスはgtk.Alignment
とされている。)
私のウィジェットにパイロットを入れようとしているので、あなたのコードを見てみたいと思います。より正確には、GUI内で使う数字だけを持っています。 – heltonbiker
@heltonbiker - あなたは数日待たなければなりませんが、コードに再度アクセスするとサンプルを投稿します。 – detly