9

我有一个 Tkinter Canvas 小部件(Python 2.7,而不是 3),在这个 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 前面。

4

2 回答 2

15

使用对象的tag_lower()andtag_raise()方法Canvas

canvas.tag_raise(firstRect)

或者:

canvas.tag_lower(secondRect)
于 2012-06-09T09:46:01.493 回答
-1

如果您在画布上有多个项目并且您不知道哪个项目会重叠,那么请执行此操作。

# 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)
于 2015-07-27T08:02:08.273 回答