Gtk3 Tabellenblatt 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

Matplotlib ist eine beliebte Python-Bibliothek zur Erstellung von statischen, animierten und interaktiven Visualisierungen in Python. In diesem Lab werden Sie lernen, wie Sie Matplotlib in eine GTK3-Anwendung einbetten und mit einem Treeview interagieren, um Daten zu speichern.

Tipps für die 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 nutzen.

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 bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.

Einrichten der Umgebung

Bevor wir beginnen, müssen wir unsere Umgebung einrichten. Wir starten damit, eine neue Python-Datei zu erstellen und die erforderlichen Bibliotheken zu importieren.

import gi
gi.require_version('Gtk', '3.0')
gi.require_version('Gdk', '3.0')
from gi.repository import Gdk, Gtk
from numpy.random import random
from matplotlib.backends.backend_gtk3agg import FigureCanvas
from matplotlib.figure import Figure

Erstellen des Datenmanagers-Fensters

In diesem Schritt werden wir die Klasse DataManager erstellen, die von der Klasse Gtk.Window erbt. Diese Klasse wird für das Verwalten der Daten verantwortlich sein, die wir plotten möchten.

class DataManager(Gtk.Window):
    num_rows, num_cols = 20, 10
    data = random((num_rows, num_cols))

Fenster einrichten

In diesem Schritt werden wir das Fenster einrichten, in dem unsere Daten angezeigt werden. Wir beginnen damit, das Fenster mit einem Titel und einer Größe zu initialisieren.

def __init__(self):
    super().__init__()
    self.set_default_size(600, 600)
    self.connect('destroy', lambda win: Gtk.main_quit())
    self.set_title('GtkListStore demo')
    self.set_border_width(8)

Fügen Sie eine Bezeichnung hinzu

In diesem Schritt fügen wir einem Fenster eine Bezeichnung hinzu, die den Benutzer auffordert, auf eine Zeile zu doppelklicken, um die Daten zu plotten.

vbox = Gtk.VBox(homogeneous=False, spacing=8)
self.add(vbox)
label = Gtk.Label(label='Double click a row to plot the data')
vbox.pack_start(label, False, False, 0)

Fügen Sie eine TreeView hinzu

In diesem Schritt fügen wir einer TreeView zum Fenster hinzu, die unsere Daten anzeigen wird. Wir erstellen auch ein Modell, um die Daten zu speichern.

sw = Gtk.ScrolledWindow()
sw.set_shadow_type(Gtk.ShadowType.ETCHED_IN)
sw.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
vbox.pack_start(sw, True, True, 0)
model = self.create_model()
self.treeview = Gtk.TreeView(model=model)
self.treeview.connect('row-activated', self.plot_row)
sw.add(self.treeview)
self.add_columns()

Erstellen des Matplotlib-Diagramms

In diesem Schritt werden wir ein Matplotlib-Diagramm erstellen, das unsere Daten anzeigt. Wir beginnen damit, eine Figur zu erstellen und ein Subplot hinzuzufügen.

fig = Figure(figsize=(6, 4))
self.canvas = FigureCanvas(fig)
vbox.pack_start(self.canvas, True, True, 0)
ax = fig.add_subplot()

Plotten der Daten

In diesem Schritt werden wir die erste Zeile unserer Daten auf dem Matplotlib-Diagramm plotten.

self.line, = ax.plot(self.data[0, :], 'go')

Implementieren der Plotfunktionalität

In diesem Schritt implementieren wir die Funktionalität, um die Daten zu plotten, wenn auf eine Zeile doppelgeklickt wird.

def plot_row(self, treeview, path, view_column):
    ind, = path
    points = self.data[ind, :]
    self.line.set_ydata(points)
    self.canvas.draw()

Spalten zur TreeView hinzufügen

In diesem Schritt fügen wir Spalten zur TreeView hinzu, die unsere Daten anzeigen werden.

def add_columns(self):
    for i in range(self.num_cols):
        column = Gtk.TreeViewColumn(str(i), Gtk.CellRendererText(), text=i)
        self.treeview.append_column(column)

Modell erstellen

In diesem Schritt erstellen wir das Modell, das unsere Daten speichern wird.

def create_model(self):
    types = [float] * self.num_cols
    store = Gtk.ListStore(*types)
    for row in self.data:
        store.append(tuple(row))
    return store

Fenster anzeigen

In diesem Schritt zeigen wir das Fenster an, das unsere Daten anzeigt.

manager = DataManager()
manager.show_all()
Gtk.main()

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie Matplotlib in eine GTK3-Anwendung einbetten und mit einer TreeView interagieren, um Daten zu speichern. Sie haben auch gelernt, wie Sie Daten mit Matplotlib plotten und wie Sie ein Modell erstellen, um Daten in einer TreeView zu speichern.