Ich entwickle eine pygtk-Anwendung, für die ich MVC-Struktur angenommen habe. Aber ich glaube nicht, dass ich das Standard-MVC-Muster in der Implementierung befolge.MVC für eigenständige Anwendung mit Python, sqlite3 und gtk
Bitte schlagen Sie vor, wie ich MVC für die folgende Problemstellung verwenden muss.
Ich verwende Python, GTK, sqlite3 in meiner Anwendung
Problemstellung für die Anwendung:
Die Daten werden in einer Log-Datei vorhanden ist. Es sollte extrahiert und in einer GUI angezeigt werden. Die GUI kann mehrere Ansichten (wie Browser-Registerkarten) haben, die die aus der Protokolldatei extrahierten Daten anzeigen (der Benutzer kann mehrere Ansichten aus derselben Datenbanktabelle erstellen). Benutzer können die Daten über GUI-Ansichten filtern/durchsuchen. Die Filterbedingung kann von Ansicht zu Ansicht variieren.
aktuelle Implementierung mit MVC Struktur:
Derzeit in der GUI, eine Schaltfläche „Create View“ ist vorhanden, die beim Anklicken eine Ansicht erstellt die extrahierten Daten angezeigt werden soll. Die Daten werden extrahiert (Controller extrahiert die Daten) aus der Logdatei und der SQLite-Datenbank (Model) hinzugefügt. Daten aus der sqlite-Datenbanktabelle werden abgerufen und zum gtk.Treemodel hinzugefügt, das es im gtk.Treeview (View) anzeigt. Jedes Mal, wenn der Benutzer auf "Ansicht erstellen" klickt, instanziiert der Controller die View-Klasse und erstellt eine neue Registerkarte in der GUI.
Ich habe drei Klassen Model, View und Controller erstellt, um dies zu erreichen. Der Controller instanziiert Modell und Ansicht. Die Anwendung instanziiert während der Ausführung Controller, die auf GUI-Ereignisse warten (klicken Sie auf "Create View" etc .. mit gtk Hauptschleife)
Hier brauche ich etwas Hilfe!
Ich habe gelesen, dass in MVC, wenn das Modell (Datenbank) geändert wird, die Ansichten auch geändert werden oder umgekehrt. Ist es möglich, dasselbe mit sqlite3 und gtk.Treeview zu erreichen?
Kurz gesagt, meine Fragen sind:
- Wie kann ich meine Anwendung GUI aktualisieren, während die Daten aus der Datenbank zu extrahieren? In MVC-Beispielen gibt es Observer-Klassen, die Callback-Funktionen aufrufen, wenn sich das Modell ändert. Wie kann ich das gleiche für obige Problemstellung schreiben?
- Gibt es auf jeden Fall kann ich sqlite3-Datenbank als treemodel für gtk.Treeview festlegen, so dass, wenn eine Zeile in die Datenbanktabelle eingefügt wird es in der Baumansicht aktualisiert wird?
- Gibt es ein Beispiel, das MVC-Architektur verwendet und mit Python, GTK, SQLite erstellt wird?
Vielen Dank im Voraus!
Danke für die Antwort! Ich habe gegoogelt, wie man mit gtk gda benutzt. Aber ich konnte nichts damit in Verbindung bringen. Können Sie bitte einen Link oder ein Beispiel angeben, wie wir mit gda eine Verbindung zu sqlite als gtk TreeModel herstellen können. Übrigens verwende ich gtk-2.24 mit pygtk und nicht gtk3 – user2109788