Вы можете установить его, например, pylab.figure(facecolor=SOME_COLOR, ...)
или matplotlib.rcParams['figure.facecolor'] = SOME_COLOR
. Похоже, что его значение по умолчанию равно hard-coded, поэтому нет никакого способа заставить 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