python - Tkinter Canvas 问题

标签 python canvas tkinter

我正在尝试更改 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/

相关文章:

python - Django - 以一种形式保存多个选择框

python - 将字典转换为方阵

canvas - WebGL 使用不同的混合模式绘制 2d 对象

javascript - 这种计算 Canvas 元素中非白色像素的方法有什么问题?

javascript - 如何填充 Canvas 并添加文本

python - PlaySound() 减慢进程

python - PyQt 中的样式表伪状态语法

python - 欧元金额的正则表达式

python - 为什么这个图像在 tkinter 中不显示?

python - 在 Tkinter 中动态创建菜单。 ( lambda 表达式?)