TKinter Tutorial

Fragen zu Tkinter.
Antworten
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

Hi,

hätte gemeint, Google suche und Foren Suche hilft, dennoch merke ich immer wieder, dass sich diese Tutorials nicht an die PEP8 halten und unter anderem auch alle Namensräume importieren (from Tkinter import *). Das will ich so in keinem Tutorial sehen. Gibt es ein vernünftiges Tutorial (ob Englisch oder Deutsch, mir total egal), dass sich an diese PEP8 Richlinien hält und dabei auch noch gut ist. Natürlich habe ich auch in meinem Galileo Book geschaut. Aber die machen das sehr kompliziert und der erste Beispielcode funkt nicht mal.

Warum will ich TKINTER haben?
Hangman basiert auf TKINTER Gui und Turtle, dazu werden evtl Sounds und Videos eingebaut.

LG
Gary
Benutzeravatar
daemonTutorials
User
Beiträge: 171
Registriert: Sonntag 6. Februar 2011, 12:06
Kontaktdaten:

Hallo Gary,

ich denke es ist sehr praktikabel den gesamten Tkinter–Namensraum zu importieren, da eine Tkinter-Anwendung eigentlich nur eine Tkinter-Anwendung ist. Eleganter ist natürlich folgendes:

Code: Alles auswählen

import tkinter as tk
oder noch schöner:

Code: Alles auswählen

class MyAppWindow(tk.Tk):
    pass
im Grunde irrelevant, wenn man nicht gerade ein Projekt hat, dass sich mit Klassen- und Funktionsnamen von Tk schneidet.
Tutorials dienen ja nur dem Zweck zu veranschaulichen wie etwas funktioniert und ein Anwendungsbeispiel mitliefern. Die Integration in das eigene Projekt geschieht natürlich auf eigenem Weg und nach eigenem Code-Design. Man kopiert selten den Code aus einem Tutorial 1:1 in das eigene Projekt, sondern einzelne Aufrufe oder kleinere Codepassagen.

Und was die PEP8 angeht: Es ist erstmal für den Programmierer an sich total irrelevant, welche Formatierungen der Code hat, er sollte halt nur lesbar sein. Man muss den Code ja auch verstehen und verstehen was er tut. Danach kann man ihn ja einfach selber schreiben, auf die selbe Art und Weise oder auf einer anderen.

So toll Standards und Konventionen auch sind, du kannst nie erwarten, dass jeder sie befolgt. Schon gar nicht, wenn die Tutorials teilweise etwas älter sind (sprich aus den frühen Jahren Pythons, weil Python 2.7 ja abwärtskompatibel ist) oder einfach totaler Mist sind (s. http://openbook.galileocomputing.de/python/).

Ich kann dir das Tutorial http://effbot.org/tkinterbook/ ans Herz legen. Es bietet einen kleinen Überblick. Ansonsten: Doku lesen und ausprobieren.

Nochmal: Code lesen - Code verstehen und interpretieren - Code schreiben

So mach ich das jedenfalls. Auf das befolgen der Konventionen lege ich so erstmal keinen Wert, ich weiß ja, wie ich es besser machen kann und mache es auch. ;) Das ist meine Meinung dazu. Das heißt nicht, dass du es genauso machen musst, aber vielleicht hilft dir das bei deinem Dilemma und deiner "Wut" ;)
LG Maik
BlackJack

@daemonTutorials: Eine `Tkinter`-Anwendung wird ja wohl noch irgend etwas ausserhalb von `Tkinter` selbst enthalten, denn irgendwo kommt da ja noch Programmlogik und problemspezifische Module ins Spiel. Und da ist es nicht nur eine Frage der eleganz, dass man sich nicht ca. 190 Namen in das Modul kippt. Beliebte Kollisionen sind da zum Beispiel `Tkinter.Image` und `PIL.Image`, die man ja durchaus mal im gleichen Modul verwenden möchte.
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

Vielen, vielen Dank!

Die Frage ist nun geklärt!

Gute Nacht euch allen!
Benutzeravatar
daemonTutorials
User
Beiträge: 171
Registriert: Sonntag 6. Februar 2011, 12:06
Kontaktdaten:

BlackJack hat geschrieben:@daemonTutorials: Eine `Tkinter`-Anwendung wird ja wohl noch irgend etwas ausserhalb von `Tkinter` selbst enthalten, denn irgendwo kommt da ja noch Programmlogik und problemspezifische Module ins Spiel. Und da ist es nicht nur eine Frage der eleganz, dass man sich nicht ca. 190 Namen in das Modul kippt. Beliebte Kollisionen sind da zum Beispiel `Tkinter.Image` und `PIL.Image`, die man ja durchaus mal im gleichen Modul verwenden möchte.
Genau das wollte ich ausdrücken, warum man den gesamten Namensraum eben nicht importieren sollte. Ich meine ja nur, wenn man jetzt nur eine Toplevel-Klasse entwickelt hat, die nichts anderes als ein Fenster öffnet mit vordefinierten Elementen die per Getter/Setter-Methoden beschrieben und abgefragt werden können, kann man das ruhig tun. Beispielsweise bei einem Eingabeformular für bestimmte Daten. Da hilft es der Übersicht das auszulagern um es ja vllt. noch woanders einzusetzen.
LG Maik
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

daemonTutorials hat geschrieben:Tutorials dienen ja nur dem Zweck zu veranschaulichen wie etwas funktioniert
Genau! Tutorials sollen zeigen, wie etwas gemacht wird, und dann auch richtig! Warum sollen für kleine Beispiele total andere Regeln gelten als für große Skripte? Wenn es schließlich darauf ankommt, das ganze zu übertragen, warum soll ich dann den ganzen Code umformatieren müssen? Gerade für Lernbeispiele sollte ich doch besonderen Wert auf formale Richtlinien legen, da ich weiß, dass die Leser noch nicht so gefestigt sind. Wenn ich z.B. Schülern in Physik sage, die Formel s=v*t gibt die Strecke an, die ein Auto mit der Geschwindigkeit v in der Zeit t zurücklegt, wie würdest Du ein Schulbuch bewerten, das statt dessen a=b*c schreibt. Formal auch richtig, wenn ich a,b und c entsprechend definiere, aber für alle Schüler total verwirrend.
Antworten