tkinter.help() - Kleiner Widgetvorführer

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
Benutzeravatar
daemonTutorials
User
Beiträge: 171
Registriert: Sonntag 6. Februar 2011, 12:06
Kontaktdaten:

Ich habe in Python3 ein kleines Programm geschrieben, basierend auf Tkinter.
Es soll den Neueinsteigern helfen, die Widgets besser verstehen zu können und auch zu sehen wie sie aussehen, ohne sie einfach in der interaktiven Konsole zu schreiben, nein in den nächsten Versionen werden Codebeispiele hinzugefügt und verbessert.
Mit hat es Mühe gekostet den ca 1240 Zeilen langen Code in Python3 zu migrieren, aber das ist ja jetzt egal.

Verfolgen könnt ihr das Programm auf PyPI tkinter.help()

Okay, dann befehle ich dem Interpreter mal folgendes:

Code: Alles auswählen

print("Let's coding!")
LG Maik
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

1. Du solltest dein Programm von Funktionen sauber trennen, es wäre also eine Main angebracht. Sonst pakst du das tkhelp-Paket direkt in die site-packages und bei einem einfachen import wird das Programm gestartet ?!
2. Warum beginnt jede Funktion mit doppeltem Unterstrich "__"?
3. 1240 Zeile, wo sind die geblieben? Wäre nicht eine normale 80 Zeichen Bergrenzung schöner?
4. Es gibt in Tkinter für jedes Widget eine "config"-Funktion, damit müsste man die Attribute der Widgets nicht direkt ändern.
Edit: 5. Die Funktion "ende" braucht es nicht, du kannst als command auch direkt "but.destroy" verwenden.

Wie kommt man eigentlich auf die Version 1.5? Ich meine das Programm ist ja noch mitten im Aufbau, wie kommt es zu dieser Versionsnummer?
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
daemonTutorials
User
Beiträge: 171
Registriert: Sonntag 6. Februar 2011, 12:06
Kontaktdaten:

Ganz einfach:
1. Das mit dem Main ist gut! Danke
2. Die V-Nummer kommt daher, weil ich schon mehrfach daran entwickelt habe und die letzte Version war 1.0, in Python 2.6.5 und unbekannt. Die 1.5 ist in Python3 geschrieben und daher der Riesensprung auf 1.5. Auch das Layout und die Struktur des Codes wurde geändert!
3. Wie 80 Zeichen? Ich brauche doch viel mehr als nur 80 Zeichen für das Programm( na gut ist ein bisschen übertrieben)
4. Ich habe irgendwo gelesen das man mit "__" die Funktionen als private deklariert. Kommt aus einem Buch
5. Die Methode zum ansprechen der Attribute habe ich auch aus einem Buch, vielleicht ist .config eleganter. Muss ich gucken.
6. Was meinst du mit ende? Die Funktion ende wird... moment ... als Funktion für einen Button verwendet:

Code: Alles auswählen

    def ende():
        but.destroy()
    
    but = tkinter.Toplevel(bg = "lightblue", bd = 2, relief = "sunken", height = 30, width = 100)
    but.title("Widget: Button")
    bl = tkinter.Label(but, text="Dies ist ein ganz normaler Button. Buttons sind in verschiedener Form\n anzeigbar. Zum Beispiel groove oder sunken. Hier ein Beispiel:\n Methode: tkinter.Button()")
    bl.pack(side=tkinter.TOP, padx=5, pady=5)
    butb = tkinter.Button(but, text="Close", command=ende, relief="groove") #hier ist ende implementiert
    butb.pack(padx=5, pady=5)
EDIT oder meinst du:

Code: Alles auswählen

butb = tkinter.Button(but, text="Close", command=but.destroy(), relief="groove")
Das wäre sogar 3 Zeilen sparend. Danke!

Fazit:
Werde 75% deiner Vorschläge umsetzen, dieser werden dann in ein paar Wochen in Version 1.6 folgen, natürlich testable!
Vielen Dank nochmal für deine Ratschläge. Kritik an deine Vorschlägen nicht böse gemeint :wink: !
LG Maik
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

2. Naja, diese Art der Versionierung ist ziemlich ungewöhnlich, aber egal, ist ja dein Programm
3. In Python gilt generell das Programm auf 80 Zeichen in der Breite zu halten, damit man es vernünftig in jedem Editor und/oder auch in einem Terminal lesen kann.
4. Das kommt aus dem Galileo Openbook und ist schlicht weg Falsch. Hierzu gibt es viele Sachen im Forum und auf BlackJacks Website. Die "__" dienen eigentlich nur zum Schutz einiger Variablen bei Mehrfachvererbungen, werden aber nur sehr selten benötigt.
5. Dennoch gibt es die "config"-Methode die genau dafür gebaut wurde, damit man einen direkten Zugriff vermeidet.
6. So wird das aber nichts, da "command" eine Funktion erwartet, du musst die Klammern nach dem destroy weglassen, sonst rufst du die Funktion gleich auf.
daemonTutorials hat geschrieben:Kritik an deine Vorschlägen nicht böse gemeint
Ich habe gegen Kritik absolut gar nichts, solange sie nicht beleidigend wird, kann man meine "Kritiken" oder Scripte runterputzen wie man will. Im Gegenteil ich finde sowas fördernd und sehr hilfreich um es besser zu machen.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
daemonTutorials
User
Beiträge: 171
Registriert: Sonntag 6. Februar 2011, 12:06
Kontaktdaten:

Kritik ist gut!

Und das mit dem Command habe ich selber gemerkt! Der PyInterpreter hat mir sofort vorgemotzt das da etwas nicht stimmt!
Darauf gekommen bin erst nach dem 2ten Anlauf!

Na gut, "__" ist also Mist!
"config" angenommen!
"80 Zeichen" - werde ich in tkinter.help() 2.1 beherzigen!
LG Maik
Antworten