Pylab mit Gtk3 Sgskip

PythonPythonBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir lernen, wie die Matplotlib-Bibliothek verwendet wird, um Figurfenster zu erstellen und zu modifizieren. Wir werden auch untersuchen, wie die Benutzeroberfläche (GUI) durch den Zugang zu den zugrunde liegenden GTK-Widgets personalisiert werden kann.

Tipps für die virtuelle Maschine (VM)

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu öffnen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie während des Lernens Probleme haben, können Sie Labby um Hilfe bitten. Geben Sie nach der Sitzung Feedback ab, und wir werden das Problem für Sie prompt beheben.

Bibliotheken importieren

Zunächst müssen wir die erforderlichen Bibliotheken importieren. Wir werden Matplotlib, GTK3 und das Gtk-Modul aus dem gi.repository verwenden.

import matplotlib
matplotlib.use('GTK3Agg')  ## oder 'GTK3Cairo'
import gi
import matplotlib.pyplot as plt
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

Figur und Achse erstellen

Als nächstes werden wir eine Figur und eine Achse mit der subplots()-Methode erstellen. Anschließend werden wir zwei Linien auf der Achse plotten und eine Legende hinzufügen, um sie voneinander zu unterscheiden.

fig, ax = plt.subplots()
ax.plot([1, 2, 3], 'ro-', label='easy as 1 2 3')
ax.plot([1, 4, 9], 'gs--', label='easy as 1 2 3 squared')
ax.legend()

Zugang zu Toolbar und VBox

Wir werden die Toolbar- und VBox-Attribute des Figurcanvas-Managers mit den Methoden manager.toolbar bzw. manager.vbox zugreifen.

manager = fig.canvas.manager
toolbar = manager.toolbar
vbox = manager.vbox

Button zur Toolbar hinzufügen

Wir werden einen Button zur Toolbar hinzufügen, indem wir das Gtk-Modul verwenden. Zunächst erstellen wir einen Button mit einem Label und verbinden ihn mit einer Funktion, die eine Nachricht ausgibt, wenn der Button geklickt wird. Anschließend erstellen wir ein Toolitem, legen dessen Tooltip-Text fest, fügen den Button hinzu und fügen es in die Toolbar ein.

button = Gtk.Button(label='Click me')
button.show()
button.connect('clicked', lambda button: print('hi mom'))

toolitem = Gtk.ToolItem()
toolitem.show()
toolitem.set_tooltip_text('Click me for fun and profit')
toolitem.add(button)

pos = 8  ## wo dieses in der Toolbar eingefügt werden soll
toolbar.insert(toolitem, pos)

Label zur VBox hinzufügen

Wir werden ein Label zur VBox hinzufügen, um die x,y-Koordinaten der Maus anzuzeigen, wenn diese über der Achse gezogen wird. Zunächst erstellen wir ein Label mit einigen Text und fügen es zur VBox hinzu.

label = Gtk.Label()
label.set_markup('Drag mouse over axes for position')
label.show()
vbox.pack_start(label, False, False, 0)

Aktualisiere das Label-Text bei Mausbewegung

Wir werden den Label-Text aktualisieren, um die x,y-Koordinaten der Maus anzuzeigen, wenn diese über der Achse gezogen wird. Wir erstellen eine Funktion, um den Label-Text zu aktualisieren, und verbinden sie mit dem motion_notify_event mithilfe der mpl_connect()-Methode.

def update(event):
    if event.xdata is None:
        label.set_markup('Drag mouse over axes for position')
    else:
        label.set_markup(
            f'<span color="#ef0000">x,y=({event.xdata}, {event.ydata})</span>')

fig.canvas.mpl_connect('motion_notify_event', update)

Zeige das Diagramm an

Schließlich zeigen wir das Diagramm mit der show()-Methode an.

plt.show()

Zusammenfassung

In diesem Lab haben wir gelernt, wie man Matplotlib verwendet, um Figurfenster zu erstellen und zu modifizieren. Wir haben auch untersucht, wie man die grafische Benutzeroberfläche (GUI) anpasst, indem man auf die zugrunde liegenden GTK-Widgets zugreift. Wir haben einen Button zur Toolbar und ein Label zur VBox hinzugefügt und den Label-Text bei Mausbewegung aktualisiert. Wir haben auch zwei Linien auf einer Achse geplottet und eine Legende hinzugefügt, um sie voneinander zu unterscheiden.