我正在尝试更改 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 小部件会正确提升。
关于python - Tkinter Canvas 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6241168/