Próbuję dołączyć figurę matplotlib do aplikacji Python Gtk3, którą piszę. Chciałbym ustawić kolor tła figury jako przezroczysty, tak aby figura po prostu ukazała się na naturalnym szarym tle aplikacji, ale nic, co dotąd próbowałem, nie działa.Siła tła rysunku matplotlib jako przezroczystego
Oto MWE:
from gi.repository import Gtk
import matplotlib.pyplot as plt
import matplotlib.lines as mlines
import numpy as np
from matplotlib.backends.backend_gtk3agg import FigureCanvasGTK3Agg as FigureCanvas
class MyWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self)
fig, ax = plt.subplots()
#fig.patch.set_alpha(0.0)
x,y = np.array([[0, 1], [0, 0]])
line = mlines.Line2D(x, y, c='#729fcf')
ax.add_line(line)
plt.axis('equal')
plt.axis('off')
fig.tight_layout()
sw = Gtk.ScrolledWindow()
sw.set_border_width(50)
canvas = FigureCanvas(fig)
sw.add_with_viewport(canvas)
layout = Gtk.Grid()
layout.add(sw)
self.add(layout)
win = MyWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()
Jeśli linia fig.patch.set_alpha(0.0)
jest komentarzem, kolor tła tylko zmieni się na biały, a nie szary. Wszystkie sugestie bardzo docenione!
czy jesteś pewien, że tło pustego 'Gtk.Window' nie jest domyślnie białe na twojej platformie? wydaje mi się, że tak jest w moim przypadku (desktop Unity). –
Nie, sprawdziłem i wydaje się być szary. Udało mi się ominąć problem za pomocą metody 'get_style' okna nadrzędnego, aby uzyskać kolor tła, a następnie ustawić go jako kolorystykę osi. To nie jest świetne rozwiązanie, ale działa. – Donagh