Python 如何在Tkinter中分层小部件(在图像前面生成形状)?

Python 如何在Tkinter中分层小部件(在图像前面生成形状)?,python,canvas,tkinter,widget,tkinter-canvas,Python,Canvas,Tkinter,Widget,Tkinter Canvas,我试图在图像前面画形状,但我看不到它们——它们在图像后面。如何使图像后退一层/形状前进一层?这是我的密码: photo=PhotoImage(文件='Alveoli.ppm') img=标签(tk,图像=照片) img.image=照片 模拟位置(x=0,y=0) oc=canvas.create_oval(0,0,400,400,fill='red') @Philipp在使用了tag_raise后,它仍然是这样的(img在左边): 您应该能够使用此方法:tag\u raise() 在您的情况

我试图在图像前面画形状,但我看不到它们——它们在图像后面。如何使图像后退一层/形状前进一层?这是我的密码:

photo=PhotoImage(文件='Alveoli.ppm')
img=标签(tk,图像=照片)
img.image=照片
模拟位置(x=0,y=0)
oc=canvas.create_oval(0,0,400,400,fill='red')
@Philipp在使用了
tag_raise
后,它仍然是这样的(img在左边):

您应该能够使用此方法:
tag\u raise()

在您的情况下,应该是这样的:


canvas.tag\u raise(oc)

您不能将画布项覆盖在嵌入的小部件上。如果要在图像顶部绘制,图像必须是使用
create\u image
创建的画布对象

完成此操作后,可以使用画布方法
lift
lower
更改项目的堆叠顺序(z索引)

photo = PhotoImage(file='Alveoli.ppm')
canvas.create_image(0, 0, image=photo, anchor="nw")
oc = canvas.create_oval(0, 0, 400, 400, fill = 'red')

只需使用widget.tkraise(高于this=ob)

如果您希望小部件高于所有其他小部件,请使用
widget.tkraise()

它仍然在图像后面。我使用Python3.7,以防万一
tag_-raise()
是2.x的东西。另外,当我使用
tag_-raise
时,我是使用
photo
还是
img
?指向文档的链接。您要升高椭圆形或降低img。因此,如果你在img上使用tag_raise,那么什么也不会发生,因为它已经在顶部。对不起,我的意思是
tag_lower
。你确定你的图像和椭圆都在同一画布上吗?