Seite 1 von 1

Widget-Level

Verfasst: Mittwoch 25. Februar 2004, 18:17
von wuf
Hallo Forum Freunde

Auch ich habe wieder einmal eine Frage.
In einem Fenster gibt es drei überein-
anderliegende Canvas-Objekte.

Meine Frage:
Stellt Tkinter eine Methode zur Verfügung,
welche es ermöglicht ein tiefergelegenes
Canvas-Objekt auf eine höhere Ebene zu heben,
ohne das Canvas-Objekt mit der .destroy()
Methode zu entfernen und neu zu erzeugen.

Im folgenden Beispiel möchte ich das gelbe
unterste Canvas-Objekt über das blaue oberste
Canvas-Objekt heben:

Code: Alles auswählen

from     Tkinter   import*

if __name__ == "__main__":
	root = Tk()
	root.wm_geometry('400x400+20+20')

	canvas1 = Canvas(root,width=200,height=200,relief='raised',bd=2,bg='yellow',cursor='hand1')
	canvas1.propagate(0)
	canvas1.place(x=20,y=20)

	canvas2 = Canvas(root,width=200,height=200,relief='raised',bd=2,bg='green',cursor='hand1')
	canvas2.propagate(0)
	canvas2.place(x=40,y=40)

	canvas3 = Canvas(root,width=200,height=200,relief='raised',bd=2,bg='blue',cursor='hand1')
	canvas3.propagate(0)
	canvas3.place(x=60,y=60)

	root.update_idletasks()

	root = mainloop()
Gruss wuf :wink:

Verfasst: Mittwoch 25. Februar 2004, 18:56
von Dookie
Hi wuf,

die Methoden lift([above]) und lower([below]) dürften Dir helfen.
Window management


Gruß

Dookie

Verfasst: Mittwoch 25. Februar 2004, 19:35
von wuf
Hallo Dookie
Danke für Deine sofortige Antwort.

Ich habe versucht mit folgender Anweisung
die gelbe Canvas über die blaue zu legen
aber es funktioniert nicht. Es wird auch keine
Fehlermeldung ausgegeben. Hast Du es auch
auf diese Art ausprobiert?:

canvas1.lift([canvas3])
oder
canvas1.lift(canvas3)

Gruss wuf :wink:

Verfasst: Mittwoch 25. Februar 2004, 21:34
von Dookie
Hi wuf,

sorry, funzt bei mir auch ned :(
Ich hatte es nur in der Doku gefunden.


Dookie

Verfasst: Mittwoch 25. Februar 2004, 22:49
von wuf
Hi Dookie

Scheinbar ist in Tkinter ein Bug vorhanden, welcher das
funktionieren der Methoden lift(),lower() und tkraise()
für die Stackmanipulation von Widgets, verhindert. Diese
Methoden funktionieren korrekt, wenn Tkinter als Lieferant
umgangen wird, und diese über Tkinters Oberklasse 'Misc'
bezogen werden.

Mit folgenden Methoden funktioniert es richtig, ohne
weitere Module importieren zu müssen:

Misc.lift(canvas1)
Misc.lower(canvas3)
Misc.tkraise(canvas1)

Gruss wuf :lol: :wink: