fenster-größe abfragen

Fragen zu Tkinter.
Antworten
micha

Montag 9. August 2004, 14:26

gibt es bei python die möglichkeit die frame oder canvas-größe
abzufragen.
alles was ich bissher versucht habe war leider erfolglos.
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Montag 9. August 2004, 14:50

Hi!

Welches GUI-Toolkit?
Bei Tkinter gibt's winfo_height(), winfo_width(), oder winfo_geometry(). Kleines Beispiel:

Code: Alles auswählen

from Tkinter import *

def show():
	g = c.winfo_geometry()
	h = c.winfo_height()
	w = c.winfo_width()
	print g,h,w

root = Tk()
c = Frame(width=200,height=300)  # oder Canvas
c.pack()
Button(text="Ok",command=show).pack()
root.mainloop()
Gruß, mawe
micha

Dienstag 10. August 2004, 13:51

hi mawe,

danke für die schnelle antwort.

ich möchte sowas machen:

Code: Alles auswählen

l = Label()
l["text"] = c.winfo_geometry() 
l.pack()
ich versuche gerade ein paar java-classen
nach python zu übersetzen, habe leider noch
keine große python-erfahrung
micha

Freitag 13. August 2004, 13:53

noch mal eine kurze erläuterung meines problems,

ich möchte das winfo_geometry() oder die anderen winfo_ -funktionen
bei der erzeugung des frames oder canvas, die fenster-groeße liefert,
nicht erst nach action wie button-druck.
ich möchte zum beispiel ein fenster "groeßer ziehen" und mir dabei die geänderten werte (z.b. height ) direct ausgeben lassen.
gibt es da irgend etwas?

danke
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Freitag 13. August 2004, 14:13

Hi!

Ich hab gedacht die Frage ist schon beantwortet ... :wink:
Also meinst Du sowas:

Code: Alles auswählen

from Tkinter import *

def resize(e):
	label["text"] = "%i x %i" % (frame.winfo_width(), frame.winfo_height())

root = Tk()

frame = Frame()
frame.bind("<Configure>", resize)
frame.pack(fill=BOTH)

label = Label(frame)
label["text"] = frame.winfo_geometry()
label.pack()

root.mainloop()
Naja, irgendwie haut das nicht so ganz hin. Es wird nur die veränderte Breite angezeigt :? Das lass ich Dir als Knobelaufgabe :wink:

Gruß, mawe
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Freitag 13. August 2004, 14:53

mawe hat geschrieben: Naja, irgendwie haut das nicht so ganz hin. ...

Code: Alles auswählen

frame.pack(fill=BOTH,expand=1)
Jetzt klappts :D

Gruß, mawe
Gast

Freitag 13. August 2004, 15:27

danke mawe,

war genau das was ich brauchte

gruß micha
geogre
User
Beiträge: 41
Registriert: Mittwoch 20. April 2005, 13:26

Dienstag 28. März 2006, 11:59

ich hab eine kleine frage zu demselben thema:

wann genau wird hier die resize-funktion ausgelöst?? es scheint ja mit dem <configure> zusammen zu hängen... aber ich versteh nicht genau wie. oder läuft die funktion ständig durch?
pr0stAta
User
Beiträge: 271
Registriert: Freitag 17. September 2004, 11:49
Wohnort: Bremen

Dienstag 28. März 2006, 14:58

Das ist Event Handling. <Configure> beschreibt ein Event was vom User in TKinter
ausgelöst wird. Jedesmal wenn du die Größe des Fenster änderst, wird die Resize Funktion aufgerufen. Es gibt noch viele andere Arten von Events.
Gute Liste ist hier:
http://www.pythonware.com/library/tkint ... ndings.htm
gruss
Zuletzt geändert von pr0stAta am Dienstag 28. März 2006, 15:14, insgesamt 1-mal geändert.
geogre
User
Beiträge: 41
Registriert: Mittwoch 20. April 2005, 13:26

Dienstag 28. März 2006, 15:06

genial! das bringt mich wieder einen mittelkleinen satz weiter :) tausend dank
Antworten