2017-06-13 33 views
2

我創建了多個畫布,並且它們重疊。我想把一個特定的畫布帶到前面。在Tkinter的其他畫布上提升畫布

我似乎沒有找到辦法做到這一點。舉起方法似乎不起作用,例如

import tkinter as Tk 
w=tk.Tk() 
a=tk.Canvas(w,width=20, height=30) 
a.place(x=20, y=30) 
b=tk.Canvas(w,width=20, height=30) 
b.place(x=25, y=35) 
w.lift(b)    # try to bring b to the front, but nothing happens 

回答

2

您的畫布在那裏,問題是,它們的顏色與窗口的其餘部分相同。您可以添加背景顏色來區分它們。

要更改窗口小部件級別上的堆疊順序,您應該使用Tkinter.Misc類。

import tkinter as tk #fixed typo in here 
w=tk.Tk() 
a=tk.Canvas(w,width=20, height=30, bg="red") 
a.place(x=20, y=30) 
b=tk.Canvas(w,width=20, height=30, bg="blue") 
b.place(x=25, y=35) 
tk.Misc.lift(a) 
w.mainloop() #even if some IDEs adds mainloop, it's always better to add it explicitly 
+0

奇妙的將我引入到tk.Misc類。對於示例代碼中的錯誤感到抱歉。我只是想用它們來展示這個想法,但它本可以更好。 – ffrree

1

您遇到的問題是因爲您選擇使用Canvas。畫布有一個lift方法覆蓋默認的lift函數。畫布的lift方法用於提升畫布上繪製的東西,而不是畫布本身。如果您選擇使用框架而不是畫布,您的代碼就可以工作。

可以使用lift方法是使用畫布的情況下,其它庫的一部分:

tk.Misc.lift(a)