Wir werden mit PyGTK 3.0 ein kleines Programm erstellen, das auch für PyGTK 3.4 funktioniert. In dieser kleinen Benutzeroberfläche erfahren Sie, wie Sie ein Programm in zwei oder mehr Dateien aufteilen.
Sie können Sebastian Pölsterls Tutorial zum neuen PyGTK 3 besuchen, hier ist das neue Tutorial, ich lasse den Link:
http://python-gtk-3-tutorial.readthedocs.org/en/latest/index.html
Dies ist Sebastians Blog.
Eine Kritik an diesem Tutorial von Sebastian ist, dass es nicht lehrt, wie man ein Programm in Teile oder in mehrere Dateien unterteilt. Es wäre gut gewesen, wenn er ein Beispiel gezeigt hätte, wie man es mit PyGTK 3 macht.
Alle großen und komplexen Programme sind in viele Dateien unterteilt, und die Dateien werden sogar in anderen Verzeichnissen abgelegt, dh sie befinden sich in verschiedenen Ordnern.
Beginnen wir mit dem kleinen Beispiel:
Hier ist der Schreibcode in einer einzelnen Datei namens gui.py. Wir öffnen den Gedit-Texteditor oder den Editor, den wir am häufigsten verwenden, kopieren den folgenden Code und speichern ihn als gui.py.
aus gi.repository importieren Gtk-Klasse gui (): def on_open_clicked (Selbst, Schaltfläche): Drucken "\" Öffnen \ "Schaltfläche wurde angeklickt" def on_close_clicked (Selbst, Schaltfläche): Drucken "Anwendung schließen" Gtk.main_quit () def __init__ (self): self.window = Gtk.Window () self.window.connect ('delete-event', Gtk.main_quit) self.box = Gtk.Box () self.window.add (self.box) self. button = Gtk.Button (label = 'Open') self.button.connect ("geklickt", self.on_open_clicked) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button ( label = 'Close') self.button.connect ("geklickt", self.on_close_clicked) self.box.pack_start (self.button, True, True, 0) self.window.show_all () Gtk.main () if __name__ == '__main__': gui = gui ()
def on_open_clicked (self, button): print "\" Open \ "button wurde angeklickt"
Diese Funktion wird im Terminal aktiviert, wenn wir auf die Schaltfläche Öffnen klicken. Das Signal zur Aktivierung lautet:
self.button.connect ("geklickt", self.on_open_clicked) def on_close_clicked (self, button): print "Closing application" Gtk.main_quit ()
Diese Funktion wird aktiviert, wenn wir auf die Schaltfläche Schließen klicken.
Schließen Sie das Programm, das wir ausführen.
das Signal zur Aktivierung ist
self.button.connect ("geklickt", self.on_close_clicked) aus dem gi.repository-Import Gtk ### Wir rufen PyGTK-Bibliotheken auf ### class gui (): ### Klassendefinition namens gui ist die Hauptklasse # ##
Widgets-Deklaration: Ein Widgets ist ein Programm, das von den von uns verwendeten grafischen Schnittstellenbibliotheken vorgegeben wird. Ein Widget ist beispielsweise eine Schaltfläche, ein Fenster, eine Box usw. Dies sind die Widgets, die wir in unserem Programm deklarieren.
self.window = Gtk.Window () ### window ### self.box = Gtk.Box () ### box #### self.button = Gtk.Button (label = 'Open') ### # open button #### self.button = Gtk.Button (label = 'Close') #### close button #### self.window.add (self.box) #### die box ist enthalten in das Fenster mit dem Namen window #### self.box.pack_start (self.button, True, True, 0) ##### Die Schaltfläche befindet sich in dem Feld mit dem Namen box ### self.window.show_all () ## # wir zeigen das ganze Fenster ### gui = gui () ### erstelle ein gui Objekt ####
Wir platzieren unser Programm in einem Ordner namens simple in unserem Fall auf dem Desktop
Wir öffnen den Ordner mit dem Terminal, in meinem Fall verwende ich Nemo von Linux Mint 14.
Zum Kompilieren setzen wir das Terminal python gui.py ein
siehe das Bild.
Jetzt können wir unser kleines Programm oder neues Widget sehen, das mit den PyGTK 3-Bibliotheken erstellt wurde
Es ist ein einfaches Fenster mit zwei Schaltflächen.
Jetzt teilen wir das Programm in drei Teile, unten lasse ich den Code der drei Dateien.
Erste gui.py-Datei
aus gi.repository importieren Gtk aus zerstören importieren zerstören aus io importieren io Klasse gui (zerstören, io): def __init __ (self): self.window = Gtk.Window () self.window.connect ('delete-event', Gtk .main_quit) self.box = Gtk.Box () self.window.add (self.box) self.button = Gtk.Button (label = 'Open') self.button.connect ("geklickt", self.on_open_clicked) self.box.pack_start (self.button, True, True, 0) self.button = Gtk.Button (label = 'Close') self.button.connect ("geklickt", self.on_close_clicked) self.box.pack_start ( self.button, True, True, 0) self.window.show_all () Gtk.main () wenn __name__ == '__main__': gui = gui ()
Zweite io.py-Datei
Klasse io: def on_open_clicked (Selbst, Schaltfläche): Drucken "\" Öffnen \ "Schaltfläche wurde angeklickt"
Dritte Datei destroy.py
aus gi.repository importieren Gtk-Klasse zerstören: def on_close_clicked (self, button): print "Anwendung schließen" Gtk.main_quit ()
In unserem Fall legen wir die drei Dateien im selben Ordner ab. Der Ordner heißt einfach geteilt.
So kompilieren Sie die drei Dateien. Wir öffnen den Ordner mit dem Terminal und legen ihn einfach wieder in das Terminal
python gui.py
Änderungen am gui.py-Code
from destroy import destroy ### Anweisung zum Importieren unserer Datei destroy.py ### von io import io ### Anweisung zum Importieren unserer Datei io.py ### class gui (destroy, io): #### in die Klasse main fügen wir die Unterklassen destroy und io #### hinzu
Sie können sehen, dass der Satz
def on_open_clicked (self, button): print "\" Open \ "button wurde angeklickt"
Es befindet sich nicht in gui.py, sondern in der Datei io.py.
Satz
def on_close_clicked (self, button):
print "Bewerbung schließen"
Gtk.main_quit ()
Es befindet sich in der Datei destroy.py
Auf diese Weise können wir ein Programm in mehrere Dateien aufteilen, die sich gleichzeitig in verschiedenen Verzeichnissen befinden.
Auf der anderen Seite ist Python eine Säule freier Software und für die Arbeit mit GTK 3.6 / 3.8 geeignet. Der Name lautet PyGTK. Pythons Anpassung für KDE heißt PyQT.
Python ist für Mac OS und WINDOWS angepasst.
Ich hoffe, dieses PyGTK3-Mini-Tutorial hat Ihnen geholfen. Sie können alle konstruktiven Kritikpunkte machen, die sie wollen.
Ich kenne auch einige Gtk 3.4 / 3.6 und Vala GTK 3.4 / 3.6.
http://www.youtube.com/watch?v=9ckRn_sx8CE
Schließlich entschuldigen sich KDE-Benutzer dafür, dass sie kein Mini-Tutorial für KDE erstellt haben.
In kde bevorzuge ich die Verwendung von kdevelop (ich denke, so heißt es), um die GUI zu erstellen, aber es fällt mir immer noch schwer, die Prozesse zu finden, die dies ermöglichen x s: '(
Großartig für diejenigen von uns, die Python: D verwenden!
Viele Grüße!
Hallo, ich verfolge diese Community schon lange und bin mir nicht sicher, ob ich dies zum ersten Mal kommentiere oder ob ich es bereits zuvor getan habe 😀 (Ich bin nicht sehr begeistert davon, wirklich Kommentare im Web zu schreiben). Die Sache ist, dass ich es tue, um Elav und KZKG ^ Gaara als Administratoren einen Vorschlag zu hinterlassen, und ich denke, es wäre eine gute Idee, ein Plugin für die Syntaxfärbung hinzuzufügen, da ich in letzter Zeit mehr Beiträge mit Code in verschiedenen Programmiersprachen sehe. Ich weiß, dass es einige Plugins gibt, aber ich habe keine ausprobiert, da ich kein WordPress-Benutzer bin. Daher überlasse ich es Ihnen, über die Realisierbarkeit der Anfrage nachzudenken. Ich nutze diese Gelegenheit, um den Rest der Leser zu fragen, was sie von der Idee halten, denn ich weiß, dass es Leute gibt, die es vorziehen, den Code ohne Schmuck zu lesen. Ich entschuldige mich, wenn dies hier bereits kommentiert wurde und aus irgendeinem Grund abgelehnt wurde, da ich mich nicht erinnern kann, eine Diskussion zu diesem Thema gesehen zu haben.
Die Wahrheit ist, ich hätte gerne die Möglichkeit, die Syntax einzufärben, um den Code der Programmiersprachen hervorzuheben.
Das würde Benutzern helfen, die Programmiersprachen lernen möchten.
Aber hey, ich fühle mich auch wohl mit dem Forum und dass wir gemeinsam diskutieren und lernen können.
GNU Emacs ist komfortabler, da Sie zumindest auswählen müssen, in welchem Programmiersprachenprüfer Sie arbeiten möchten (wenn Sie nicht mehr Gewicht für Ihren Prozessor wünschen, verwenden Sie GNU Nano und genießen Sie Minimalismus von seiner besten Seite).
Elio, wir reden über WordPress. Im Blog umgesetzt Desde Linux. Es verfügt nicht über die Funktion, die Buchstaben der Beiträge einzufärben.
Oh es tut mir leid.
Naaa Emacs ist bequem für diejenigen, die 84 Finger XD haben .., normale Menschen, Textkameraden, Sublimetext oder Notepad ++ xd
Das Unplausible ist, dass man das Tippen nicht gelernt hat, was erforderlich ist, um mit GNU Emacs und seinen Tastaturkürzeln gut umgehen zu können. Darüber hinaus erleichtert Ihnen die Benutzeroberfläche die Verwendung der Menüs (es kann unter Windows verwendet werden, es wird jedoch nicht empfohlen, dies im normalen Modus, sondern im Eingabeaufforderungsmodus zu tun, damit win32 Ihr Skript nicht boykottiert).
Sehr cooles Tutorial. Der Python-Quellcode ist übrigens nicht kompiliert, sondern eine interpretierte Sprache.
Es kann zu Pseudocode kompiliert werden. Es ist nicht die Maschinensprache, sondern die Bytes, die für den Interpreter etwas darstellen, aber der Prozess wird auch als kompiliert bezeichnet. In diesem Sinne kann man sagen, dass etwas kompiliert ist.
Vielleicht ist es besser, pytgk2 zu lernen, da die neueste Version für Windows 2.24 ist. Serie 3 fällt durch ihre Abwesenheit auf. Und die schlechten Zungen sagen, dass der Gnom in jeder neuen Version alle Apis bricht.
Ich programmiere ein Modell mit GTK 3.4 / 3.6 und die Wahrheit ist, dass sie Ihre Geduld und Ihren Kopf brechen. Sie müssen den Code neu schreiben. Jetzt verstehe ich, warum sich die Linux Mint-Leute über GTK und das GNOME-Projekt beschweren.
Für diejenigen von MINT stimme ich GTK 2.4 zu, dass dies nicht geschehen ist.
Gutes Tutorial und Referenzen.
Nur ein Detail, da Code eingegeben wurde, sind in Python Einrückungen obligatorisch und sollten im Beispielcode beachtet werden.
Viele Grüße!
Können Sie erklären, woraus die obligatorischen Identifikationen in Python bestehen? Um ehrlich zu sein, ich habe das noch nie gehört. Ich bin schlecht an die PyGTK 2/3 Foren auf Englisch gewöhnt und übersehen sie vielleicht.
In Python verwenden Sie keine Schlüssel wie in C oder Start- / Endblöcke wie in Pascal, aber alles wird durch den Einzug verstanden, den Sie dem Code geben. Das heißt, die Blöcke werden durch Einrücken erkannt. Es ist eine Funktion, die ich besonders liebe. Sie vermeiden es, Schlüssel und ähnliches zu schreiben.
Ich mag das einfach nicht, es scheint einfacher zu sein, zwei kleine Schlüssel oder ein std :: endl; zu setzen, als gesehen zu werden, wenn die xd-Zeile gut tabellarisch ist
: p Ihr Programmierlehrer wird eine 0 für Sie setzen. Oder schlimmer noch, sie werden dich von deinem Job entlassen. Am wichtigsten ist, dass der Code mit allem, was dazu gehört, lesbar ist
Wenn ich mit schließenden Klammern ende, bin ich viel besser lesbar.
Ernsthaft???
int main(int argc, char *argv[]){program_name = argv[0];while ((argc > 1) && (argv[1][0] == '-')) {switch (argv[1][1]) {case 'v':verbose = 1; break;case 'o':out_file = &argv[1][2];break;case 'l':line_max = atoi(&argv[1][2]);break;default:fprintf(stderr,"Bad option %s\n", argv[1]);usage();}++argv;--argc;} if (argc == 1) {do_file("print.in");} else {while (argc > 1) {do_file(argv[1]);++argv;--argc;}}return (0);}
Siehst du? Ohne Einrückungen ist es nicht sehr gut verstanden. Und das ist einfach. Bei einem komplexeren versteht es nur der Compiler. Die Sache ist, da Sie sowieso einrücken MÜSSEN (damit Menschen den Code verstehen), warum müssten Sie redundant sein und Trennzeichen verwenden? Genug mit Einrückung und das wars.
Natürlich wird nichts verstanden, da Sie die Regeln für gutes Schreiben für ein Programm in c / c ++ nicht einhalten. Was Sie getan haben, gilt für alles, wie das Verschachteln einer Funktion in einer Funktion in einer anderen Funktion, die sich in einer anderen befindet. Dann möchte ich Sie xd sehen, wenn Sie es verstehen können.
Übrigens, mit zwei Looks ist dieser Code leicht verständlich xD
Was ich getan habe, habe ich absichtlich getan, um Ihnen zu zeigen, dass es ohne Einrückung, obwohl es kompiliert wird, äußerst schwierig ist, Code zu verstehen. Sie haben also zwei Regeln: Einrücken und Begrenzen mit Trennzeichen. Das ist aber überflüssig. In Python wird ein solcher Code vom Interpreter einfach nicht akzeptiert. Und Sie haben nur eine Regel: Einzug. Einfach.
Aber hey, jeder mit seinem Geschmack.
Beide sind gut, eingerückt und nicht eingerückt. Meiner Meinung nach bevorzuge ich den Semikolonstil oder Rubin, ähnlich wie Python, aber die Einrückung ist nicht erforderlich.
So wird es besser verstanden: P:
echo 'int main (int argc, char * argv []) {Programmname = argv [0]; while ((argc> 1) && (argv [1] [0] ==' - ')) {switch (argv [ 1] [1]) {case 'v': verbose = 1; break; case 'o': out_file = & argv [1] [2]; break; case 'l': line_max = atoi (& argv [1] [2]); break; default: fprintf (stderr, »Ungültige Option% s \ n », argv [1]); usage ();} ++ argv; –argc;} if (argc == 1) {do_file (" print.in ");} else {while (argc> 1) { do_file (argv [1]); ++ argv; –argc;}} return (0);} '| perl -p -es / \ {/ \ {\ n \ t / g; s / \; / \; \ n \ t / g; s / \ t \} / \} / g; '
Grüße 😀
Ich denke, Carlos bedeutet, dass dort, wo der Code herauskommt, keine Einrückungen vorhanden sind. Das mit Kopieren und Einfügen funktioniert einfach nicht. Ich weiß nicht, ob das Tag beim Erstellen eines Beitrags vorhanden ist
Sprachcode eingeben. Es wäre gut, wenn sie es sagen würden, wenn es nicht existiert.
Ich habe bereits gesehen, was das Problem ist: Das CODE-Tag entfernt alle Leerzeichen und Tabulatoren (das sollte es nicht tun !!!). Aber wenn Sie einen nbsp darauf setzen, sieht der Code gut aus. A0 in hex (160 in dec), obwohl ich denke, dass es von der Schriftart abhängen könnte (ich weiß es nicht). Wenn es verwendet wird, kommt es wie folgt heraus:
def fib(n):
a, b = 0, 1
while a < n:
print(a)
a, b = b, a+b
Was in meinen Tests gut aussieht, aber ich habe keine Vorschau, wenn ich Antworten poste (und das sollte es geben !!!). Wenn es nicht herauskommt, ist es nicht meine Schuld 😉
Schauen Sie sich die Beispiele an, die Sebastian Pölsterl in sein PyGTK 3-Tutorial aufgenommen hat. Sebastian platziert keine Labels.
Beispiel:
http://python-gtk-3-tutorial.readthedocs.org/en/latest/entry.html#example
Sie können das gesamte Tutorial von Sebastian sehen.
Ich weiß nicht was du meinst. Was ich damit sagen will ist, dass es hier in den Beiträgen nicht möglich ist, das HTML-Tag "CODE" zu verwenden, damit das, was Sie als Code eingeben, gut eingerückt herauskommt. Wenn Sie auf der Seite, auf die Sie verweisen, die Quellen der Seite sehen, werden Sie feststellen, dass sie keinen CODE verwendet, sondern andere HTML-Trennzeichen.
Es ist nicht gegen den Code, den Sie eingeben, sondern weist auf einen Fehler im Posting-System dieser Site hin. Was Admins vielleicht beheben können.
Wenn ich über Tags spreche, spreche ich offensichtlich über HTML, nicht über Python. In jedem Fall funktioniert es einfach nicht, wenn Sie Code ohne Einrückung in Python einfügen. Wenn ein Neuling kommt und den Code so kopiert, wie er in diesem Beitrag erscheint, und versucht, ihn auszuführen, schlägt er fehl. Sie können frustriert sein, als Sie ein Neuling sind. Auch hier liegt der Fehler nicht bei Ihnen. und in meiner unmittelbaren vorherigen Antwort gab ich einen Weg, um das Problem auf der Ebene der Benutzer, die Beiträge verfassen, zu lösen.
Sie haben absolut Recht, ich hätte Fotos hochladen sollen, anstatt den Code zu kopieren.
um zu zeigen, wie Anweisungen in PyGTK 3 richtig angeordnet sind.
Zum Programmieren mit Python empfehle ich die Verwendung von Eclipse mit dem PyDev-Plugin oder dem Pychar m
Wie oben erwähnt, mag ich Python wegen der Einkerbungen nicht. Wie wir gesehen haben, funktioniert das Kopieren und Einfügen nicht, was bei anderen Sprachen wie C, Java, PHP usw. nicht der Fall ist.
Zur Lesbarkeit wenden wir einen Code-Verschönerer an (wie http://indentcode.net/ ) und fertig,
Das Hässliche ist behoben, aber wenn es keine Einrückung gibt und die Logik geändert wird, klingen wir ...
Ich bin neu bei PyGTK. Ist es möglich, mit Shell-Skripten in dieser Sprache zu interagieren?
Danke für das Tutorial.
Grüße.