Python 特金特画布问题

Python 特金特画布问题,python,canvas,tkinter,Python,Canvas,Tkinter,我正在尝试更改Tkinter画布小部件的分层。对于大多数小部件,您可以通过使用lift方法将小部件强制置于其他小部件之上。但是,如果我在画布小部件上尝试相同的操作,我会得到一个错误 错误: TypeError: tag_raise() got an unexpected keyword argument 'aboveThis' 我的问题的一个例子: import Tkinter as Tk root = Tk.Tk() w, h = 200, 200 a = Tk.Canvas(roo

我正在尝试更改Tkinter画布小部件的分层。对于大多数小部件,您可以通过使用lift方法将小部件强制置于其他小部件之上。但是,如果我在画布小部件上尝试相同的操作,我会得到一个错误

错误:

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()
如果我对框架小部件做同样的事情,它就会工作

例如:

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\u raise()
的别名,用于提升的不是画布本身,而是画布中的实体

我在
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(高于this=None)
替换为
Tk.Misc.lift(a,高于this=None)
,则画布小部件将正确升起。

画布
lift()
方法是
标记提升()
的别名,用于升起的不是画布本身,而是画布中的实体

我在
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(overthis=None)
替换为
Tk.Misc.lift(a,overthis=None)
,则画布小部件将正确启动。

我提出这个问题是因为我实际上想要实现类似于

canvas-pathName raise tagOrId ?aboveThis?
以将各个画布项目提升到特定的z位置。对于那些对同样的事情感兴趣的人,我将发布我的认识(经过一点思考之后),这可以在Python中非常容易地完成:

canvasObject.tag_raise(tagOrId, tagOrId2)

这里的第二个参数被合并到tk命令行中,然后被解释为“overthis”值。

我之所以提出这个问题,是因为我实际上想要实现类似tk语句的等价物

canvas-pathName raise tagOrId ?aboveThis?
以将各个画布项目提升到特定的z位置。对于那些对同样的事情感兴趣的人,我将发布我的认识(经过一点思考之后),这可以在Python中非常容易地完成:

canvasObject.tag_raise(tagOrId, tagOrId2)
这里的第二个参数只是合并到tk命令行中,然后被解释为“高于此”值