Variablen mit mehreren Zeilen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
BlackJack

@seelosp: Wieso erleichtert das die Arbeit bei anderen Programmen?

Du solltest ganz dringend von `place()` weg kommen, denn Deine GUI funktioniert sonst nur bei Dir zuverlässig. Bei einer anderen Bildschirmauflösung, anderen Schriftgrössen oder -arten, anderen Themes, usw. passen diese absoluten Positionen nicht unbedingt. Bei mir sieht das zum Beispiel gerade so aus:
Bild

Noch nicht unbenutzbar, aber auch nicht schön.

Der Test-Code ist falsch, denn es darf innerhalb eines Programms immer nur ein Exemplar von `Tk` geben. Wenn man ein zweites erstellt, ist das Verhalten undefiniert und kann von komisch bis harter Programmabsturz gehen. Weitere Fenster neben dem Hauptfenster muss man mit `Toplevel` erstellen.

Den Sternchen-Import sollte man auch lassen. Damit holst Du Dir alle Namen aus dem Modul in den Namensraum des importierenden Moduls. Spätestens wenn Du noch andere Module so importierst wird es irgend wann unübersichtlich, weil man nicht mehr so einfach heraus finden kann, welcher Name aus welchem Modul stammt. Ausserdem passieren dann auch mal schnell Namenskollisionen. Bei `tkinter` und `PIL` ist zum Beispiel `Image` beliebter Kandidat dafür.
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

theo.puke hat geschrieben:In dem Code gibt es ja überhaubt kein Fehlerhandling. Da muss man noch ein paar try und catch Ausdrücke verwenden.
Wo soll denn da ein Fehler auftreten?
seelosp
User
Beiträge: 11
Registriert: Freitag 27. Januar 2012, 16:02

BlackJack hat geschrieben:@seelosp: Wieso erleichtert das die Arbeit bei anderen Programmen?

Du solltest ganz dringend von `place()` weg kommen, denn Deine GUI funktioniert sonst nur bei Dir zuverlässig. Bei einer anderen Bildschirmauflösung, anderen Schriftgrössen oder -arten, anderen Themes, usw. passen diese absoluten Positionen nicht unbedingt. Bei mir sieht das zum Beispiel gerade so aus:
Bild

Noch nicht unbenutzbar, aber auch nicht schön.

Der Test-Code ist falsch, denn es darf innerhalb eines Programms immer nur ein Exemplar von `Tk` geben. Wenn man ein zweites erstellt, ist das Verhalten undefiniert und kann von komisch bis harter Programmabsturz gehen. Weitere Fenster neben dem Hauptfenster muss man mit `Toplevel` erstellen.

Den Sternchen-Import sollte man auch lassen. Damit holst Du Dir alle Namen aus dem Modul in den Namensraum des importierenden Moduls. Spätestens wenn Du noch andere Module so importierst wird es irgend wann unübersichtlich, weil man nicht mehr so einfach heraus finden kann, welcher Name aus welchem Modul stammt. Ausserdem passieren dann auch mal schnell Namenskollisionen. Bei `tkinter` und `PIL` ist zum Beispiel `Image` beliebter Kandidat dafür.
Sorry... aber ich habe schon mal ein Programm mit 10 Tk()s geschrieben :wink:
Zuletzt geändert von seelosp am Samstag 28. Januar 2012, 09:54, insgesamt 1-mal geändert.
seelosp
User
Beiträge: 11
Registriert: Freitag 27. Januar 2012, 16:02

Soll ich stattdessen pack() benutzen? Und wie ändert man dort die Position?
BlackJack

@seelosp: Bei `pack()` kann man angeben an welcher Seite des Container-Widgets platziert werden soll, und bei `grid()` an welcher Reihe/Spalte im Gitter. Man darf innerhalb eines Container-Widgets nur eine Layout-Methode verwenden, und bei `place()` sollte man immer die gleiche Seite wählen. Und wo es Sinn macht oder nötig ist, kann man `Frame`\s als Container-Widgets zum Gruppieren einführen.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi sellosp

Habe dein Skript zum Friseur 'Pack' gebracht. Natürlich gib es auch noch den Friseur 'Grid'. Das Skript ist nur für Experimentierzwecke gedacht. Es werden keine Eingabefehler abgefangen und damit erstellte Tk-Fensterskripte können überschrieben werden!

Tk-Window-Builder

Viel Spass beim programmieren & experimentieren!

Gruß wuf :wink:
Take it easy Mates!
Antworten