【发布时间】:2021-06-13 18:03:24
【问题描述】:
我只是在 python 中使用 tkinter 开发 GUI。但我在这里遇到了一些问题。我正在创建一个按钮,一旦单击它就会返回一个页面(Misc.lower(canvas2) 和Misc.lift(canvas1))。虽然我为self.canvas2 上的按钮创建了一个窗口,但当画布降低时,按钮仍然存在。
这是我的代码:
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() 的文章,但我不确定它是如何工作的。
提前致谢!
【问题讨论】:
-
你到底有什么“问题”?
-
实际上,当我降低创建按钮的画布时,我要求提供一种解决方案来摆脱按钮。(编辑问题)
-
这里有一些关于
Canvas.delete()方法的文档。总而言之,每当您创建Canvas项目时,都会返回一个唯一 ID,您可以稍后将其传递给delete()以将其删除。另请注意,尝试删除不存在的内容不被视为错误。另请注意,您可以使用canvas.itemconfigure(id, state='hidden'/'normal')显示和隐藏 现有 画布项目。 -
根据您要完成的任务,考虑使用
Frames来显示不同的“页面”——请参阅Switch between two frames in tkinter 接受的答案。
标签: python tkinter button canvas