我发现本教程用于在glade / GTK窗口中显示matplotlib-plot:
http://matplotlib.org/examples/user_interfaces/mpl_with_glade.html
我不确定本教程使用的许多软件包的版本。如何将此代码移植到最新版本的GTK和Glade? p>
可以在这里找到Glade文件:
https://github.com/matplotlib/matplotlib/blob/master/examples/user_interfaces/mpl_with_glade.glade
答案 0 :(得分:0)
我有一个简单的版本可以使用。随意发布改进。我还发布了拉取请求,因此可能会将其添加到matplotlib文档中。
Python 3文件:
#!/usr/bin/env python3
from gi.repository import Gtk, Gio
from matplotlib.figure import Figure
from matplotlib.axes import Subplot
from numpy import arange, sin, pi
from matplotlib.backends.backend_gtk3agg import FigureCanvasGTK3Agg as FigureCanvas
import sys
class Window1Signals:
def on_window1_destroy(self, widget):
Gtk.main_quit()
def main():
builder = Gtk.Builder()
builder.add_objects_from_file("mpl_with_glade_316.glade", ("window1", "") )
builder.connect_signals(Window1Signals())
window = builder.get_object("window1")
sw = builder.get_object("scrolledwindow1")
#Start of Matplotlib specific code
##########################################################################
figure = Figure(figsize=(8,6), dpi=71)
axis = figure.add_subplot(111)
t = arange(0.0, 3.0, 0.01)
s = sin(2*pi*t)
axis.plot(t,s)
axis.set_xlabel('time [s]')
axis.set_ylabel('voltage [V]')
canvas = FigureCanvas(figure) # a Gtk.DrawingArea
canvas.set_size_request(800,600)
sw.add_with_viewport(canvas)
##########################################################################
#End of Matplotlib specific code
window.show_all()
Gtk.main()
if __name__ == "__main__":
main()
Glade代码:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.16.1 -->
<interface>
<requires lib="gtk+" version="3.10"/>
<object class="GtkApplicationWindow" id="window1">
<property name="can_focus">False</property>
<property name="title" translatable="yes">Matplotlib</property>
<property name="default_width">800</property>
<property name="default_height">600</property>
<signal name="destroy" handler="on_window1_destroy" swapped="no"/>
<child>
<object class="GtkScrolledWindow" id="scrolledwindow1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="border_width">10</property>
<property name="shadow_type">in</property>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
</interface>