Как установить z-индекс элемента холста tkinter Python? - PullRequest
1 голос
/ 26 марта 2020

как я могу установить z-индекс элементов холста tkinter (круг, прямоугольник) при первом запуске холста? Или я могу установить 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" теперь должны быть на самом дальнем фоне, а элементы с тег "сетка" на переднем плане. Но если я запускаю программу, это не так ...

1 Ответ

0 голосов
/ 26 марта 2020

Вы не можете установить порядок тегов до тех пор, пока тег не будет создан. Ваш код поднимает и опускает теги, которые еще не существуют.

Это можно увидеть, заметив разницу в поведении этого кода:

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

...