Tkinter - 在调用 Misc.lower() 方法时删除 Canvas 的小部件

Tkinter - Deleting widgets of a Canvas when calling Misc.lower() method

我正在 python 中使用 tkinter 开发 GUI。但我在这里遇到了一些问题。我正在创建一个按钮,一旦单击它就会返回一个页面(Misc.lower(canvas2)Misc.lift(canvas1))。虽然我为 self.canvas2 上的按钮创建了一个 window,但当 canvas 降低时按钮仍然存在。

这是我的代码:

from tkinter import *

class Application:
    def __init__(self):
        self.window = Tk()
        self.window.geometry("1280x720")

        self.canvas1 = Canvas(self.window, highlightthickness=0, bg="#1b1b1b")
        self.canvas2 = Canvas(self.window, highlightthickness=0, bg="red2")

        self.initButtons()

        self.window.mainloop()

    def initButtons(self, *args):
        buttons = {}
        self.buttonList = []
        buttons['backButtons'] = Button(self.window, bd=0, activebackground="#1b1b1b", bg="#1b1b1b", text='Back', fg="#ffffff")
        self.buttonList.append(buttons['backButtons'])

        self.initSecondWindow()

    def initFirstWindow(self, *args):
        Misc.lower(self.canvas2)
        self.canvas1.place(relwidth=1, relheight=1)

    def initSecondWindow(self, *args):
        backButton = self.buttonList[0]
        backButton.config(command=self.initFirstWindow)
        self.canvas2.place(relwidth=1, relheight=1)

        self.canvas2.create_window(640, 360, window=backButton)

Application()

我读了一些关于 canvas.delete() 的内容,但我不确定它是如何工作的。

提前致谢!

不确定您为什么只想隐藏它,那么用户将如何重定向到上一页?这是你想要的吗?

from tkinter import *

class Application:
    def __init__(self):
        # self.backButton = None
        self.window = Tk()
        self.window.geometry("1280x720")

        self.canvas1 = Canvas(self.window, highlightthickness=0, bg="#1b1b1b")
        self.canvas2 = Canvas(self.window, highlightthickness=0, bg="red2")

        self.initButtons()

        self.window.mainloop()

    def initButtons(self, *args):
        buttons = {}
        self.buttonList = []
        buttons['backButtons'] = Button(self.window, bd=0, activebackground="#1b1b1b", bg="#1b1b1b", text='Back', fg="#ffffff")
        self.buttonList.append(buttons['backButtons'])

        self.initSecondWindow()

    def initFirstWindow(self, *args):
        Misc.lower(self.canvas2)
        self.canvas2.delete(self.res)
        self.canvas1.place(relwidth=1, relheight=1)

    def initSecondWindow(self, *args):
        backButton = self.buttonList[0]
        backButton.config(command=self.initFirstWindow)
        self.canvas2.place(relwidth=1, relheight=1)

        self.res = self.canvas2.create_window(640, 360, window=backButton)

Application()