Frage

Ich lerne Python nun schon seit einiger Zeit mit einigem Erfolg.Ich habe es sogar geschafft, mit PyGtk + Glade ein oder zwei (einfache) Programme zu erstellen.

Die Sache ist:Ich bin mir nicht sicher, ob der beste Weg, GTK mit Python zu verwenden, darin besteht, die Schnittstellen mit Glade zu erstellen.

Ich habe mich gefragt, ob die erfahreneren unter uns (denken Sie daran, ich bin nur ein Anfänger) die Vorteile und Nachteile der Verwendung von Glade gegenüber der Erstellung alles im Code selbst aufzeigen könnten (vorausgesetzt, das Erlernen der richtigen GTK-Bindungen würde das nicht tun). genau ein Problem sein).

War es hilfreich?

Lösung

Ich würde sagen, es kommt darauf an:Wenn Sie feststellen, dass Sie mit Glade die Apps erstellen können, die Sie möchten oder erstellen müssen, ist das absolut in Ordnung.Wenn Sie jedoch tatsächlich lernen möchten, wie GTK funktioniert, oder einige nicht standardmäßige Anforderungen an die Benutzeroberfläche haben, werden Sie dies tun haben um in die GTK-Interna einzutauchen (die nicht so kompliziert sind).

Persönlich bin ich normalerweise etwa 5 Minuten in einem Rich Client, wenn ich eine Funktion oder Anpassung benötige, die durch einen Designer wie Glade oder einfach unmöglich ist Stetisch.Vielleicht liegt es nur an mir.Dennoch ist es für mich immer noch nützlich, das Fensterdesign mit einem grafischen Tool zu booten.

Meine Empfehlung:Wenn die Gewinnung reicher Kunden mithilfe von GTK ein wesentlicher Teil Ihres Jobs/Hobbys sein soll, lernen Sie GTK ebenfalls Wille Ich muss diesen Code eines Tages schreiben.

P.S.Finde ich persönlich Stetisch um Glade für Designarbeiten überlegen zu sein, wenn auch etwas instabiler.

Andere Tipps

Verwenden Sie GtkBuilder anstelle von Glade. Es ist in Gtk selbst integriert und nicht in einer separaten Bibliothek.

Der Hauptvorteil von Glade besteht darin, dass es viel, viel einfacher ist, die Schnittstelle zu erstellen.Es ist etwas aufwändiger, Signalhandler anzuschließen, aber ich hatte nie das Gefühl, dass das wichtig ist.

Glade ist sehr nützlich zum Erstellen von Schnittstellen. Das bedeutet, dass Sie die GUI einfach ändern können, ohne viel Programmieren zu müssen.Sie werden feststellen, dass, wenn Sie etwas Nützliches tun möchten (z. B.Erstellen einer Baumansicht) müssen Sie sich mit verschiedenen Teilen der GTK-Dokumentation vertraut machen – in der Praxis finden Sie ein gutes Tutorial/Beispiele.

Ich begann mit Glade, ging aber bald dazu über, alles nur noch im Code zu erledigen.Glade eignet sich gut für einfache Dinge und ist gut, wenn Sie lernen, wie GTK die Widgets organisiert (wie Dinge verpackt sind usw.).Wenn Sie jedoch alles im Code konstruieren, haben Sie viel mehr Flexibilität.Außerdem besteht keine Lichtungsabhängigkeit.

Normalerweise beginne ich mit Glade, bis ich an einen Punkt komme, an dem es nicht mehr über die Funktionen verfügt, die ich brauche, z. B.Erstellen eines Assistenten.Solange ich die von Glade bereitgestellten Standard-Widgets verwende, gibt es wirklich keinen Grund, die GUI von Hand zu programmieren.

Je vertrauter ich mit der Formatierung des Codes durch Glade werde, desto besser wird meine Handcodierung.Ganz zu schweigen davon, dass es wirklich einfach ist, Glade zum Erstellen des zugrunde liegenden Frameworks zu verwenden, sodass Sie sich nicht um alle Initialisierungen kümmern müssen.

Wenn Sie eine herkömmliche GUI-Anwendung schreiben, die viele Standardkomponenten von GTK+ (Schaltflächen, Beschriftungen, Container usw.) wiederverwendet, würde ich persönlich Glade + Kiwi wählen (ein praktisches Framework zum Erstellen von GTK+-GUI-Anwendungen).

Der größte Vorteil der Verwendung von Glade besteht darin, dass dadurch Layout-/Packungscode erheblich reduziert wird.Hier ist ein äußerst einfaches Beispiel, das bereits die Probleme beim manuellen Layouten einer GUI (ohne Verwendung von Hilfsfunktionen) zeigt:

container = gtk.HBox()
label = gtk.Label(str="test")
container.add(label)

Weitere Beispiele finden Sie unter a Schau hier.Selbst wenn Sie ein kompliziertes benutzerdefiniertes Widget schreiben, können Sie in Glade jederzeit einen Platzhalter erstellen und diesen nach der Instanziierung ersetzen.

Es dürfte nicht mehr allzu lange dauern, bis das Glade-Team eine neue Version des Designers (3.6.0) veröffentlicht.Diese neue Version bietet Unterstützung für GtkBuilder, das libglade ersetzt (die eigentliche Bibliothek, die die Glade-XML-Dateien in einen Widget-Baum umwandelt).Der neue Glade-Designer bietet außerdem erneut Unterstützung für die Definition von Katalogen (Widget-Sätzen) in Python, sodass Sie ganz einfach Ihre eigenen benutzerdefinierten Widgets hinzufügen können.

Ich empfehle die Verwendung von Glade für eine schnelle Entwicklung, jedoch nicht zum Lernen.Warum?Denn manchmal müssen Sie einige Widgets optimieren, damit sie so funktionieren, wie Sie es möchten, und wenn Sie die Eigenschaftenattribute jedes Widgets nicht wirklich kennen/verstehen, werden Sie in Schwierigkeiten geraten.

Für schnelle und einfache Bildschirme verwende ich Glade.Aber für alles, was feinere Kontrollebenen erfordert, erstelle ich benutzerdefinierte Klassen für das, was ich tatsächlich benötige (das ist wichtig, weil es zu leicht ist, sich von Verallgemeinerungen hinreißen zu lassen).

Mit wenigen anwendungsspezifischen Klassen kann ich das Erscheinungsbild der gesamten Anwendung von einem einzigen Ort aus schnell ändern.Eher so, als würde man CSS verwenden, um die Konsistenz von Websites aufrechtzuerhalten.

Persönlich würde ich empfehlen, es auszuprogrammieren, anstatt Glade zu verwenden.Ich lerne immer noch Python und PyGtk, aber ich muss sagen, dass mir das manuelle Schreiben der Benutzeroberfläche viele Einblicke in die Funktionsweise der Dinge unter der Haube gegeben hat.

Sobald Sie es gelernt haben, würde ich sagen, dass Sie Glade oder andere UI-Designer ausprobieren sollten, aber auf jeden Fall zuerst lernen, wie man es auf die „harte“ Art macht.

Beginnen Sie zunächst damit, dies ins rechte Licht zu rücken.

Sie werden GTK verwenden.Dies ist eine riesige C-Bibliothek, die 1993 unter Verwendung der besten Traditionen des Codierungsstils der 1970er Jahre erstellt wurde.Es wurde entwickelt, um die Implementierung von GIMP zu unterstützen, einem Möchtegern-Photoshop-Konkurrenten mit legendären Fehlern in der Benutzeroberfläche.Ein typisches GUI-Feld kann vierzig oder mehr Parameter haben, die sich meist wiederholen und über Getter und Setter verfügen.Es wird Schmerzen geben.

Das GTK selbst verwaltet mithilfe von GObject ein vollständiges dynamisches Typsystem in C.Dies macht das Debuggen zu einer besonderen Freude, da es das manuelle Durchlaufen von Arrays von Zeigern auf Methoden voller generischer Argumentlisten mit impliziter Vererbung erfordert.Sie werden auch dann durch Pango-Bibliotheken springen, wenn Sie es am wenigsten erwarten, z. B. indem Sie eine Pango-Konstante verwenden, um anzugeben, wo in einer Beschriftung die Auslassungspunkte stehen, wenn die Seite klein ist.Erwarten Sie mehr Schmerzen.

Inzwischen schwören Sie wahrscheinlich, alle Ihre GTK-Interaktionen in eine Model-View-Controller-Architektur zu packen, die speziell auf Ihre Anwendung zugeschnitten ist.Das ist gut.

Die Verwendung von Glade, gtkBuilder oder Stetic hilft dabei, das große Kopplungsproblem von vierzig Parametern an eine Funktion zu lösen.Glade bietet einen einfachen GUI-Builder zum Zusammenziehen von Komponenten per Drag-and-Drop.Die Parameter und geerbten Parameter sind etwas getrennt.Die Ausgabe von Glade ist eine .glade-XML-Datei, die Sie dann einlesen, Ihre Rückrufe („Signalhandler“) an identisch benannte Funktionen anhängen und die In-Memory-Version dieses XML abfragen oder aktualisieren, um Widgets zu erhalten, die Sie dann mit pyGTK verwenden manipulieren.Glade selbst ist knarrend und nicht gut gepflegt.

Durch die Verwendung von pyGTK erhalten Sie eine ärgerlicherweise feinkörnige Kontrolle zum Erstellen Ihrer GUI.Dabei handelt es sich um ausführlichen Code zum Kopieren und Einfügen.Jedes Attribut ist ein separater Funktionsaufruf.Der Attributsetter gibt nichts zurück, daher kommt eine Verkettung der Aufrufe nicht in Frage.Normalerweise bietet Ihre IDE nur minimale Hilfe zu den Funktionen und Sie werden ständig auf DevHelp oder ein anderes Tool verweisen.

Man würde fast erwarten, dass GTK-GUIs zum Scheitern verurteilt sind.

Sie können Glade-2 zum Entwerfen und Verwenden verwenden Glade2py.py zur Generierung des reinen Pygtk-Codes, Es verwendet pygtkcompat, um GTK3 zu unterstützen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top