2017-04-21 57 views
0

我在画布(canvas12)中有4个项目。我试图将两个拖动按钮(frame1_drag/frame2_drag)放在窗口前面(frame2can/frame1can)。但我无法获得tag_raise()或lift()来做任何事情。现在,拖动按钮卡在窗户后面。是的,它必须是这种方式,因为拖动按钮在canvas12中为它们各自的framexcan窗口设置了动画。Tkinter不能在帆布内抬起物品

frame2can = canvas12.create_window(0, 0, anchor='nw', width=sf(768), height=sf(fr1h),window=frame2) 
frame1can = canvas12.create_window(0, sf(fr1h), anchor='nw', width=sf(768), height=sf(fr1h),window=frame1) 

# Drag Buttons 
frame1_drag = canvas12.create_rectangle(0, 0, sf(fr0h), sf(fr0h), outline="blue", fill="green", tags="token") 
frame2_drag = canvas12.create_rectangle(0, sf(fr1h), sf(fr0h), sf(fr0h+fr1h), outline="blue", fill="green", tags="token") 

canvas12.tag_raise(frame1_drag) 
canvas12.tag_raise(frame2_drag) 

回答

0

您不能将绘制的项目放置在窗口对象顶部。

从官方TK文件:

在画布上的项目进行排序显示的目的,在显示列表中的第一项被首先显示,然后在列表中的下一项,等等。稍后在显示列表中的项目隐藏显示列表中较早的那些项目,并且有时被称为在先前项目的“顶部”。当创建一个新项目时,它被放置在显示列表的最后,并放在其他项目的顶部。小部件命令可用于重新排列显示列表的顺序。

窗口项目是上述规则的例外。底层窗口系统要求它们总是被绘制在其他项目之上。另外,窗口项目的堆叠顺序不受任何画布控件命令的影响;您必须改用raise和lower Tk命令。