Tkinter无法在画布中提升物品

时间:2017-04-21 00:50:22

标签: python tkinter widget tkinter-canvas

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

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)

1 个答案:

答案 0 :(得分:0)

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

来自官方tk文档:

  

画布中的项目是为了显示而排序的,首先显示显示列表中的第一项,然后是列表中的下一项,依此类推。显示列表中稍后的项目会遮盖显示列表中较早的项目,有时也称为早期项目的“顶部”。创建新项目时,它将放置在显示列表的末尾,而不是其他所有项目。窗口小部件命令可用于重新排列显示列表的顺序。

     

窗口项是上述规则的一个例外。底层窗口系统要求它们总是在其他项目之上绘制。此外,窗口项的堆叠顺序不受任何canvas小部件命令的影响;你必须使用加高和降低Tk命令。