我正在编写一个Python Gtk3应用程序,想将一个matplotlib图形包含在其中。我希望将图形的背景色设置为透明,这样图形就只会显示在应用程序自然灰色的背景上,但是到目前为止,我尝试过的所有方法似乎都没有奏效。
以下是一个最小可行示例:
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()
如果取消注释
fig.patch.set_alpha(0.0)
行,背景颜色只会改变为白色,而不是灰色。非常感谢您的建议!
Gtk.Window
的背景默认不是白色吗?对我来说似乎是这样(Unity桌面)。 - ali_mget_style
方法获取背景颜色,然后将其设置为轴的面颜色来解决了这个问题。这不是一个很好的解决方案,但它有效。 - Donagh