Widget-Level

Fragen zu Tkinter.
Benutzeravatar
wuf
User
Beiträge: 1367
Registriert: Sonntag 8. Juni 2003, 09:50

Widget-Level

Beitragvon wuf » Mittwoch 25. Februar 2004, 18:17

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:
Take it easy Mates!
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Mittwoch 25. Februar 2004, 18:56

Hi wuf,

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


Gruß

Dookie
Benutzeravatar
wuf
User
Beiträge: 1367
Registriert: Sonntag 8. Juni 2003, 09:50

Beitragvon wuf » Mittwoch 25. Februar 2004, 19:35

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:
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Mittwoch 25. Februar 2004, 21:34

Hi wuf,

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


Dookie
Benutzeravatar
wuf
User
Beiträge: 1367
Registriert: Sonntag 8. Juni 2003, 09:50

Beitragvon wuf » Mittwoch 25. Februar 2004, 22:49

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:
Take it easy Mates!

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder