[英]Tkinter Canvas Problems
我正在嘗試更改 Tkinter Canvas 小部件的分層。 對於大多數小部件,您可以使用lift方法強制小部件高於其他小部件。 但是,如果我在 Canvas 小部件上嘗試相同的操作,我會收到錯誤消息。
錯誤:
TypeError: tag_raise() got an unexpected keyword argument 'aboveThis'
我的問題的一個例子:
import Tkinter as Tk
root = Tk.Tk()
w, h = 200, 200
a = Tk.Canvas(root, bg='red', width=w, height=h)
a.grid(column=0, row=0)
b = Tk.Canvas(root, bg='blue', width=w, height=h)
b.grid(column=0, row=0)
a.lift(aboveThis=None)
root.mainloop()
如果我對 Frame 小部件做同樣的事情,它就可以工作。
例子:
import Tkinter as Tk
root = Tk.Tk()
w, h = 200, 200
a = Tk.Frame(root, bg='red', width=w, height=h)
a.grid(column=0, row=0)
b = Tk.Frame(root, bg='blue', width=w, height=h)
b.grid(column=0, row=0)
a.lift(aboveThis=None)
root.mainloop()
canvas lift()
方法是tag_raise()
的別名,它不是用來提升 canvas 本身,而是提升 canvas 中的實體。
我在Tkinter.py
源代碼中找到了這條評論:
# lower, tkraise/lift hide Misc.lower, Misc.tkraise/lift,
# so the preferred name for them is tag_lower, tag_raise
# (similar to tag_bind, and similar to the Text widget);
# unfortunately can't delete the old ones yet (maybe in 1.6)
如果您將a.lift(aboveThis=None)
替換為Tk.Misc.lift(a, aboveThis=None)
則 canvas 小部件將正確升起。
我來這個問題是因為我實際上是想實現一個 tk 語句的等價物
canvas-pathName raise tagOrId ?aboveThis?
為了將單個 canvas 項目提升到特定的 z 位置。 對於那些對同一件事感興趣的人,我將發布我的認識(經過一點頭疼之后),這可以很容易地在 Python 中完成:
canvasObject.tag_raise(tagOrId, tagOrId2)
這里的第二個參數只是被合並到 tk 命令行中,然后被解釋為“aboveThis”值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.