|
@@ -0,0 +1,52 @@
|
|
|
|
+#!/usr/bin/python3
|
|
|
|
+
|
|
|
|
+"""
|
|
|
|
+This test program utilizes the Python bindings for GTK3 (PyGI or PyGObject).
|
|
|
|
+
|
|
|
|
+The program conists of a window with a button that closes the window when
|
|
|
|
+clicked. The window also shows a matplotlib plot. The plot is based on this
|
|
|
|
+example: http://matplotlib.org/examples/pie_and_polar_charts/polar_bar_demo.html
|
|
|
|
+"""
|
|
|
|
+
|
|
|
|
+from gi.repository import Gtk
|
|
|
|
+from matplotlib.backends.backend_gtk3cairo import FigureCanvasGTK3Cairo as FigureCanvas
|
|
|
|
+from matplotlib.figure import Figure
|
|
|
|
+import matplotlib.cm as cm
|
|
|
|
+import numpy as np
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+class MyWindow(Gtk.Window):
|
|
|
|
+ def __init__(self):
|
|
|
|
+ Gtk.Window.__init__(self, title="PyGI / PyGObject Example")
|
|
|
|
+ self.connect("delete-event", Gtk.main_quit)
|
|
|
|
+ self.set_default_size(400, 400)
|
|
|
|
+
|
|
|
|
+ self.box = Gtk.Box(spacing=6, orientation=Gtk.Orientation.VERTICAL)
|
|
|
|
+ self.add(self.box)
|
|
|
|
+
|
|
|
|
+ self.fig = Figure(figsize=(10,10), dpi=80)
|
|
|
|
+ self.ax = self.fig.add_subplot(111, polar=True)
|
|
|
|
+
|
|
|
|
+ N = 20
|
|
|
|
+ theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)
|
|
|
|
+ radii = 10 * np.random.rand(N)
|
|
|
|
+ width = np.pi / 4 * np.random.rand(N)
|
|
|
|
+ bars = self.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)
|
|
|
|
+
|
|
|
|
+ self.canvas = FigureCanvas(self.fig)
|
|
|
|
+ self.box.pack_start(self.canvas, True, True, 0)
|
|
|
|
+
|
|
|
|
+ self.button = Gtk.Button(label="Exit")
|
|
|
|
+ self.button.connect("clicked", self.on_exit_clicked)
|
|
|
|
+ self.box.pack_start(self.button, False, False, 0)
|
|
|
|
+
|
|
|
|
+ def on_exit_clicked(self, widget):
|
|
|
|
+ Gtk.main_quit()
|
|
|
|
+
|
|
|
|
+def main():
|
|
|
|
+ win = MyWindow()
|
|
|
|
+ win.show_all()
|
|
|
|
+ Gtk.main()
|