Как поднять "слой" canvas выше python tkinter
Сделал кнопки и разместил необходимые изображения в tkinter. По задумке поезд должен двигаться по путям, поэтому нужен метод canvas.move()
. Но canvas либо находится выше всего интерфейса (если создаю экземпляр после отрисовки кнопок и тд.), либо ниже (если раньше) и иконка поезда находится под всем. Как можно решить эту проблему? Если переделывать все изображения под canvas, то придется менять их размер, и переписывать большую часть кода. Поэтому хотелось бы избежать этого (если конечно, есть такой вариант)
class App(ctk.CTk):
def __init__(self):
super().__init__()
self.geometry("1390x1040")
self.title("Система контроля движения поездов")
self.resizable(False, False)
self.color_for_label = "#424242"
self.button_font = ("Arial", 22, "bold")
self.canvas = Canvas()
self.canvas.pack(side="top", expand=True)
self.configure(background="green")
self.img_timetable = ctk.CTkImage(Image.open("images/timetable_icon.png"), size=(35, 35))
self.img_close = ctk.CTkImage(Image.open("images/close_icon.png"), size=(35, 35))
self.route = ctk.CTkImage(Image.open("images/route.png"), size=(80, 850))
self.img_main_station = ctk.CTkImage(Image.open("images/main_station.png"), size=(50, 50))
self.img_station = ctk.CTkImage(Image.open("images/station.png"), size=(30, 30))
self.img_train = PhotoImage(file="images/train.png")
self.button_timetable = ctk.CTkButton(self, text="Расписание", height=50, width=500, font=self.button_font,
image=self.img_timetable, command=self.button_timetable, corner_radius=15)
self.button_timetable.place(x=10, y=10)
self.button_close = ctk.CTkButton(self, text="Закрыть", height=50, width=500, font=self.button_font,
image=self.img_close, command=self.button_close, corner_radius=15)
self.button_close.place(x=520, y=10)
def button_timetable(self):
print("Нажал")
def button_close(self):
quit()
def start_train(self):
self.trains = []
train = self.canvas.create_image(0, 200, image=self.img_train)
Источник: Stack Overflow на русском