2012-06-09 2 views
5

У меня есть виджет Tkinter Canvas (Python 2.7, а не 3), и на этом холсте у меня разные предметы. Если я создаю новый элемент, который перекрывает старый элемент, он будет впереди. Как я могу переместить старый элемент перед вновь созданным или даже перед всеми остальными элементами Canvas?Tkinter Canvas переместить элемент на верхний уровень

Пример кода до сих пор:

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

теперь я хочу firstRect быть перед secondRect.

ответ

8

Используйте tag_lower() и tag_raise() методы Canvas объекта:

canvas.tag_raise(firstRect) 

Или:

canvas.tag_lower(secondRect) 
+0

ли это поднять его на один уровень или на фронт? –

+3

@PeterKramer: На фронт я верю. Вот ссылка [http://effbot.org/tkinterbook/canvas.htm#Tkinter.Canvas.tag_lower-method) –

0

Если у вас есть несколько элементов на холсте, и вы не знаете, какой из его будет перекрывайте, затем сделайте это.

# 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) 
Смежные вопросы