2012-06-09 12 views
5

Ho un widget Tkinter Canvas (Python 2.7, non 3) e su questo Canvas ho elementi diversi. Se creo un nuovo oggetto che si sovrappone a un vecchio elemento, sarà in primo piano. Come posso spostare il vecchio oggetto di fronte a quello appena creato, o anche davanti a tutti gli altri oggetti sulla tela?Tkinter Canvas sposta l'elemento al livello superiore

codice Esempio finora:

from Tkinter import * 
root = Tk() 
canvas = Canvas(root,width=200,height=200,bg="white") 
canvas.grid() 
firstRect = canvas.create_rectangle(0,0,10,10,fill="red") 
secondRect = canvas.create_rectangle(5,5,15,15,fill="blue") 

ora voglio firstRect di essere di fronte a secondRect.

risposta

8

Utilizzare i tag_lower() e tag_raise() metodi per l'oggetto Canvas:

canvas.tag_raise(firstRect) 

Oppure:

canvas.tag_lower(secondRect) 
+0

lo fa alzare di un livello o in primo piano? –

+3

@PeterKramer: in prima fila credo. Ecco il [collegamento] (http://effbot.org/tkinterbook/canvas.htm#Tkinter.Canvas.tag_lower-method) –

0

Se si dispone di più elementi sulla tela e non si sa quale sua intenzione di sovrapponi, quindi fallo.

# find the objects that overlap with the newly created one 
# x1, y1, x2, y2 are the coordinates of the rectangle 

overlappers = canvas.find_overlapping(x1, y1, x2, y2) 

for object in overlappers: 
    canvas.tag_raise(object) 
Problemi correlati