gpt4 book ai didi

Python Tkinter canvas.delete 失败

转载 作者:太空宇宙 更新时间:2023-11-03 15:17:24 26 4
gpt4 key购买 nike

在下面的实验中,当我按下 Button1 时,标签框 Label 应该出现,而且确实如此。但是,如果我按一下 Button2,就会收到一个错误,该错误引用了消失函数的删除命令中的问题,然后引用了 tk 模块中的“标签搜索表达式中的无效 bool 运算符”。

from tkinter import *
from tkinter import ttk

class MainWindow(Frame):
def __init__(self,master):
super().__init__()
self.pack(fill=Y, side=LEFT)
self.booking_canvas = Canvas(self, width=400,
height=100,background="red")
self.button1 = Button(self.booking_canvas, text = "Appear", command =
self.appear)
self.button2 = Button(self.booking_canvas, text="Disappear",
command=self.disappear)
self.booking_canvas.create_window(20,10,window = self.button1)
self.booking_canvas.create_window(80, 10, window=self.button2)
self.booking_canvas.pack(side=LEFT)

def appear(self):
self.tagbox = Label(self.booking_canvas,text="Hello")
self.booking_canvas.create_window(200,10,window = self.tagbox, anchor
= NW)

def disappear(self):
self.booking_canvas.delete(self.tagbox)

root = Tk()
MainWindow(root)
root.mainloop()

你能帮忙吗?我没有发现错误消息有什么帮助。我已经能够在文档中找到的简单示例中使 .delete 方法起作用,但在这里不行。

最佳答案

代码应该记住 create_window() 调用的返回值。然后将其传递给 Canvas.delete 方法:

def __init__(self, master):
...
self.item = None

def appear(self):
self.tagbox = Label(self.booking_canvas,text="Hello")
self.disappear() # remove old one
self.item = self.booking_canvas.create_window(200, 10,
window=self.tagbox, anchor=NW)

def disappear(self):
if self.item:
self.booking_canvas.delete(self.item)

关于Python Tkinter canvas.delete 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43772867/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com