我如何设置Python tkinter canvas元素的z索引?

问题描述 投票:0回答:1

如何在画布初始启动时设置tkinter画布元素(圆形,矩形)的z-index?或者我可以在绘图时直接设置z-index一个圆圈?不幸的是,我对canvas.tag_lower("tag_name")所做的工作不多。我以为这个命令会将标签的所有元素都移回一级-是这样吗?

class CanvasGui(tk.Canvas):

    def __init__(self, master):
        super().__init__(master, bg="#FFF", highlightthickness=0, borderwidth=0)
        self.pack(fill="both", expand=True)
        self.setCanvasLayers()

    def setCanvasLayers(self):
        self.tag_lower("highlightGridPoint")
        self.tag_lower("grid")

[我认为,标记为“ highlightGridPoint”的元素现在应该位于最远的背景中,标记为“ grid”的元素应该位于最远的背景中。但是,如果我运行该程序,就不是这样...

python canvas tkinter z-index
1个回答
0
投票

您必须先创建标签,然后才能设置标签的顺序。您的代码会升高和降低尚不存在的标签。

您可以通过注意到此代码之间的行为差​​异来看到这一点:

canvas.setCanvasLayers()
canvas.create_rectangle(10,10,50,50, fill="red", tags=("red",))
canvas.create_rectangle(20,20,60,60, fill="green", tags=("green",))

screenshot changing layers before creating objects

...和此代码:

canvas.create_rectangle(10,10,50,50, fill="red", tags=("red",))
canvas.create_rectangle(20,20,60,60, fill="green", tags=("green",))
canvas.setCanvasLayers()

screenshot changing layers after creating objects

© www.soinside.com 2019 - 2024. All rights reserved.