Можете да го зададете, например чрез pylab.figure(facecolor=SOME_COLOR, ...)
или matplotlib.rcParams['figure.facecolor'] = SOME_COLOR
. Изглежда, че стойността му по подразбиране е твърдо кодирана, така че няма начин да кажете на MPL да спазва GTK темата.
Ето конкретен пример как да направите това в PyGTK. Част от тази информация тук е събрана от „Вземете цветовете на текущия gtk стил“ и от документите 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)
След това можете да се свържете към сигнала realize
(може би също и сигнала map-event
, не опитах) и да оцветите отново графиката, когато бъде създадена съдържащата джаджа:
graph_panel.connect('realize', set_graph_appearance, graph.figure)
(Тук graph_panel
е gtk.Alignment
, а graph
е подклас на FigureCanvasGTKAgg
, който има figure
член, ако е необходимо.)
person
tkf
schedule
08.02.2012