如何设置Python tkinter画布元素的z索引?

2024-10-01 09:27:52 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在画布初始启动时设置tkinter画布元素(圆形、矩形)的z索引?或者,我可以在绘制圆时直接设置z索引吗?不幸的是,我不能用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”的元素位于前景中。但是如果我运行这个程序,情况就不是这样了


Tags: 标记selfmaster元素inittkinterdeftag
1条回答
网友
1楼 · 发布于 2024-10-01 09:27:52

在创建标记之前,不能设置标记的顺序。您的代码会提升和降低尚不存在的标记

您可以通过注意以下代码之间的行为差异来了解这一点:

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

相关问题 更多 >