Seite 1 von 2

Re: Variablen mit mehreren Zeilen

Verfasst: Freitag 27. Januar 2012, 20:20
von 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.

Re: Variablen mit mehreren Zeilen

Verfasst: Samstag 28. Januar 2012, 00:17
von nomnom
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?

Re: Variablen mit mehreren Zeilen

Verfasst: Samstag 28. Januar 2012, 09:31
von seelosp
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:

Re: Variablen mit mehreren Zeilen

Verfasst: Samstag 28. Januar 2012, 09:34
von seelosp
Soll ich stattdessen pack() benutzen? Und wie ändert man dort die Position?

Re: Variablen mit mehreren Zeilen

Verfasst: Samstag 28. Januar 2012, 10:27
von 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.

Re: Variablen mit mehreren Zeilen

Verfasst: Samstag 28. Januar 2012, 18:39
von wuf
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: