使用matplotlib和PyGObject在GUI上显示绘图
我使用Glade和PyGObject构建了一个应用程序。现在,我试图在我的GUI上包含一个部分,它可以根据一些选择显示绘图。经过一些研究,我发现我可以包括使用matplotlib生成的图,如本例所示: 我试过这个例子,效果很好。在代码之后,我使用以下行添加了一个滚动窗口(到主窗口中的网格中):使用matplotlib和PyGObject在GUI上显示绘图,matplotlib,gtk3,pygobject,Matplotlib,Gtk3,Pygobject,我使用Glade和PyGObject构建了一个应用程序。现在,我试图在我的GUI上包含一个部分,它可以根据一些选择显示绘图。经过一些研究,我发现我可以包括使用matplotlib生成的图,如本例所示: 我试过这个例子,效果很好。在代码之后,我使用以下行添加了一个滚动窗口(到主窗口中的网格中): self.scrolledwin = self.builder.get_object("scrolledwin") 使用代码中的相同行生成绘图并将其设置为滚动窗口: def set_charts(sel
self.scrolledwin = self.builder.get_object("scrolledwin")
使用代码中的相同行生成绘图并将其设置为滚动窗口:
def set_charts(self):
fig = Figure(figsize=(5,5), dpi=100)
ax = fig.add_subplot(111, projection='polar')
N = 20
theta = linspace(0.0, 2 * pi, N, endpoint=False)
radii = 10 * random.rand(N)
width = pi / 4 * random.rand(N)
bars = ax.bar(theta, radii, width=width, bottom=0.0)
for r, bar in zip(radii, bars):
bar.set_facecolor(cm.jet(r / 10.))
bar.set_alpha(0.5)
ax.plot()
canvas = FigureCanvas(fig)
canvas.set_size_request(400,400)
self.scrolledwin.add_with_viewport(canvas)
但是,在我的应用程序中,滚动窗口部分为空,不显示绘图
我怎样才能解决这个问题?另外,使用“matplotlib.pyplot.savefig”保存绘图,然后显示图像是否会影响性能?您的
set\u charts
方法中似乎缺少的是self.canvas.show()
和self.scrolledwin.show()
。每次向gui添加内容时,都必须调用其容器小部件的show
方法或show\u all
方法
在您链接的示例中,所有小部件都添加到同一级别(脚本级别),并且my\u first\u window.show\u all()
被调用以在末尾显示窗口及其所有子窗口
由于要在方法中添加self.scroledwin
和self.canvas
小部件(我假设,在调用self.your_main_window.show_all()
之后,可能是在\uu init\uuu
方法中),您需要显示这些添加的小部件,以便显示它们
来源:您是否尝试过self.canvas.show()
或self.scrolledwin.show()
甚至self.your_主窗口.show_all()
?这就是我们所缺少的。self。我的主窗口。show_all()就在那里。添加canvas.show()/self.scrolledwin.show\u all()有效。如果你能补充这一点作为答案,我会接受的。谢谢你的指点!