geometry im Programm und interaktiven Modus

Fragen zu Tkinter.
Antworten
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Hallo,

ich habe mal wieder ein Problem, bei dem ich nicht weiterkomme. Es ist aber so offensichtlich, dass ein Bug schon wieder unwahrscheinlich ist. Wahrscheinlich habe ich diese Eigenheit nur bislang überlesen.

Aufgabe: Ich möchte mir die Geometry eines Widgets ausgeben lassen (Position, Breite, Höhe haben dasselbe Problem).

Problem: wenn ich die Methode während eines Programmablaufs ausführe, bekomme ich immer den Wert "1x1+0+0" zurück. Wenn ich sie aber im interaktiven Modus aufrufe, bekomme ich die korrekte Größe und Position.

System: Ich verwende Python 2.2.2 (und kann in absehbarer Zeit nicht wechseln)

Beispiel:
interaktiv:

Code: Alles auswählen

>>> import Tkinter as tk
>>> root = tk.Tk()
>>> print root.geometry()
200x200+291+108
Programm:

Code: Alles auswählen

import Tkinter as tk	
if __name__ == "__main__":
    root = tk.Tk()
    print root.geometry()
1x1+0+0
Ich hoffe, ihr könnt mir weiter helfen!

VG,
Sky
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo Michael Schneider

Hier die Lösung:

Code: Alles auswählen

import Tkinter as tk

if __name__ == "__main__":
    root = tk.Tk()
    root.update_idletasks()

    print root.geometry()

    root.mainloop()
Gruss wuf :wink:
Take it easy Mates!
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Hi Wuf,

vielen Dank, es funktioniert!!! :-)
Und dann noch sowas banales.

Ich war schon kurz davor, die Geometrie mal per callback aus der mainloop ausgeben zu lassen. Aber damit, dass es einfach am Taskstack liegt, habe ich nun gar nicht gerechnet - obwohl doch naheliegend.

Hast Du geraten oder kanntest Du das "Problem" schon?

Gruß,
Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo Michael Schneider

Super! Ja ich bin schon mit diesem Tkinter-Verhalten konfrontiert worden. Du kannst evt. einmal folgende Tkinter-Methoden näher studieren.

Code: Alles auswählen

widget.update_idletasks()
widget.update()
Gruss wuf
Take it easy Mates!
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Hi Wuf,

ja, die Methoden kenne ich zur Genüge. Habe nur das Verhalten nicht mit einem späteren Update in Verbindung gebracht. :-)

Und bitte sei so gut, einfach Michael (oder Michel) zu schreiben. Ich habe meinen Namen bei der Anmeldung nur angegeben, weil ich dies für ein "seriöses" Forum hielt, wo Nicks nicht gewünscht sind.

Danke,
Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Michael Schneider hat geschrieben:Ich habe meinen Namen bei der Anmeldung nur angegeben, weil ich dies für ein "seriöses" Forum hielt, wo Nicks nicht gewünscht sind.
Inwiefern ist die Verwendung eines Nicknames unseriös?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

numerix hat geschrieben:Inwiefern ist die Verwendung eines Nicknames unseriös?
Naja, jedem das seine. In den meisten Foren sind Nicknames üblich, in Usenet und auf Mailinglisten eher nicht. Danach richte ich mich dann einfach.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo Michel

No Problem Michel. Unser Forum ist soweit seriös solange kein Spam-Verrücker Daemon sein Unwesen treibt. :lol:

Wünsche dir noch viel Spass beim Programmieren, Experimentieren und Forschen mit Python & Tkinter.

Gruss wuf :wink:
Take it easy Mates!
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

numerix hat geschrieben:
Michael Schneider hat geschrieben:Ich habe meinen Namen bei der Anmeldung nur angegeben, weil ich dies für ein "seriöses" Forum hielt, wo Nicks nicht gewünscht sind.
Inwiefern ist die Verwendung eines Nicknames unseriös?
Weil in gewisser Weise der Name für Seriösität steht. Es sei dahin gestellt, dass man auch einen falschen, real wirkenden Namen angeben kann. Das ist wie mit skurilen Namen in eMail-Adressen, mit denen man sich nicht ernsthaft bei namhaften Unternehmen bewerben sollte. Auch wenn man es nicht glaubt, das ist ein Punkt auf den die Personalentscheider achten. Nicknamen haben immer etwas Lockeres, was ungezwungenen Umgang, aber auch Oberflächlichkeit andeuten kann.

Rückblickend hätte ich auch lieber einen Nick, aber meinem Wunsch wurde bislang nicht entsprochen. Aber was nicht ist, kann noch werden.

VG,
Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Michael Schneider hat geschrieben:Weil in gewisser Weise der Name für Seriösität steht. Es sei dahin gestellt, dass man auch einen falschen, real wirkenden Namen angeben kann. Das ist wie mit skurilen Namen in eMail-Adressen, mit denen man sich nicht ernsthaft bei namhaften Unternehmen bewerben sollte.
Ich denke nicht dass du dich für dieses Forum bewerben musst. Sonst müsst ich mir ja irgendwelche Interview-Fragen überlegen :)

Naja, wenn ich mir die Errungenschaften von William D Clinger (einfach mal im Internet suchen) ansehe, und dann seine E-Mailadresse anschaue dann scheint ihm das nicht sonderlich geschadet zu haben.

Es hängt wie du selbst sagtest vom Kontext ab. Ich würde mich nicht mit einem Nicknamen bewerben (zumindest nicht mit einem der so einfach zu durchschauen ist), aber für IRC oder so, wo Nicknamen sowieso üblich sind, sehe ich keinen Grund mich hinter einem Nicknamen zu 'verstecken'.

Andererseits: BlackJack wirkt im Ubuntu-Forum wo er seinen vollen Namen nutzt auch nicht kompetenter als hier. Ich würd sagen es ist so ziemlich gleich :)
Michael Schneider hat geschrieben:Rückblickend hätte ich auch lieber einen Nick, aber meinem Wunsch wurde bislang nicht entsprochen. Aber was nicht ist, kann noch werden.
Es steht dir frei einen Administrator zu kontaktieren.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Leonidas hat geschrieben:
Michael Schneider hat geschrieben:Weil in gewisser Weise der Name für Seriösität steht. Es sei dahin gestellt, dass man auch einen falschen, real wirkenden Namen angeben kann. Das ist wie mit skurilen Namen in eMail-Adressen, mit denen man sich nicht ernsthaft bei namhaften Unternehmen bewerben sollte.
Ich denke nicht dass du dich für dieses Forum bewerben musst. Sonst müsst ich mir ja irgendwelche Interview-Fragen überlegen :)
Nunja, damals kam es mir wie eine Bewerbung vor. :-)
Leonidas hat geschrieben:
Michael Schneider hat geschrieben:Rückblickend hätte ich auch lieber einen Nick, aber meinem Wunsch wurde bislang nicht entsprochen. Aber was nicht ist, kann noch werden.
Es steht dir frei einen Administrator zu kontaktieren.
Ich möchte sagen, dass ich genau das gemacht habe. Ich habe die PM nicht mehr, aber AFAIR hatte ich das mal angefragt.

Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Michael Schneider hat geschrieben:
Leonidas hat geschrieben:
Michael Schneider hat geschrieben:Rückblickend hätte ich auch lieber einen Nick, aber meinem Wunsch wurde bislang nicht entsprochen. Aber was nicht ist, kann noch werden.
Es steht dir frei einen Administrator zu kontaktieren.
Ich möchte sagen, dass ich genau das gemacht habe. Ich habe die PM nicht mehr, aber AFAIR hatte ich das mal angefragt.
Wenn der betreffene Admin sich nicht rührt, kannst du ihm ja nochmal ne PM schreiben, vielleicht hat er es ja verplant oder so.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten