2012-06-09 11 views
5

Mam widżet Tkinter Canvas (Python 2.7, nie 3), a na tym płótnie mam różne przedmioty. Jeśli utworzę nowy element, który nakłada się na stary przedmiot, znajdzie się on z przodu. Jak mogę teraz przenieść stary przedmiot przed nowo utworzony, a nawet przed wszystkimi innymi przedmiotami na płótnie?Przeniesienie elementu Tkinter Canvas na najwyższy poziom

Przykładowy kod do tej pory:

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") 

teraz chcę firstRect się przed secondRect.

Odpowiedz

8

użyć tag_lower() i tag_raise() metody obiektu Canvas:

canvas.tag_raise(firstRect) 

Lub:

canvas.tag_lower(secondRect) 
+0

czy to podnieść go o jeden poziom lub z przodu? –

+3

@PeterKramer: Na pierwszy rzut oka wierzę. Oto [link] (http://effbot.org/tkinterbook/canvas.htm#Tkinter.Canvas.tag_lower-method) –

0

Jeśli masz wiele elementów na płótnie, a nie wiesz, który z nich będzie jego zachodzą na siebie, a następnie wykonaj to.

# 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) 
Powiązane problemy