首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我怎么才能把帆布带到前面呢?

我怎么才能把帆布带到前面呢?
EN

Stack Overflow用户
提问于 2021-12-10 07:36:19
回答 3查看 274关注 0票数 0

我重叠了5个Tk.Canvas对象,每个对象都有不同的图像。我想把每一张帆布带到其他画布的前面,在最前面的画布上画画。

代码语言:javascript
运行
复制
class window_tk():
def __init__(self,main):
    self.main=main
    self.canvas_org = tk.Canvas(self.main, bg='white')
    self.canvas_layer1 = tk.Canvas(self.main, bg='red')
    self.canvas_layer2 = tk.Canvas(self.main, bg='green')
    self.canvas_layer3 = tk.Canvas(self.main, bg='blue')
    self.canvas_layer4 = tk.Canvas(self.main, bg='black')
    self.btn_load = tk.Button(self.main,text = "Load Image",command = self.load_ct)
    self.btn_layer1 = tk.Button(self.main,text = "Draw in L1",command = self.bring_1)
    self.btn_layer2 = tk.Button(self.main,text = "Draw in L2",command = self.bring_2)
    self.btn_layer3 = tk.Button(self.main,text = "Draw in L3",command = self.bring_3)
    self.btn_layer4 = tk.Button(self.main,text = "Draw in L4",command = self.bring_4)

def bring_1(self):
    self.canvas_layer1.place(x=50,y=00)

def bring_2(self):
    self.canvas_layer2.place(x=50, y=00)

def bring_3(self):
    self.canvas_layer3.place(x=50, y=00)

def bring_4(self):
    self.canvas_layer4.place(x=50, y=00)

我原以为canvas.place()函数会把画布放在前面,但事实并非如此。我可以使用哪种功能?或者我应该打开所有其他画布?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-12-10 07:52:25

由于Canvas覆盖了.tkraise()函数,所以需要直接调用TCL命令:

代码语言:javascript
运行
复制
self.canvas.tk.call('raise', self.canvas._w)
票数 1
EN

Stack Overflow用户

发布于 2021-12-10 07:47:46

请看acw1668给出的答案。lift函数不适用于画布对象。他的回答是正确的。

包括画布在内的所有tkinter对象都支持以下方法:

如果参数为None,则将包含w的窗口移到窗口堆叠顺序的顶部。若要将窗口移至Toplevel窗口w的上方,请传递w作为参数。

这使您可以完全控制哪个小部件位于顶部。

https://anzeljg.github.io/rin2/book2/2405/docs/tkinter/universal.html

现在我重读了一下,我发现它的语言有点不正确."w“是任何tkinter小部件,"above_this”是另一个tkinter小部件。该函数将"w“放在"above_this”的前面,并按堆叠顺序排列。

票数 1
EN

Stack Overflow用户

发布于 2021-12-10 07:43:00

您可以使用以下功能-

代码语言:javascript
运行
复制
canvas.tag_raise(canvas_layer4) -> For bringing to front

canvas.tag_lower(canvas_layer4) -> For pushing back
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70301142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档