如何解决在按tkinter的按钮上制作新标签时出现的问题
import tkinter as tk
root = tk.Tk()
root.title("To Do")
root.geometry("500x750")
root.resizable(False,False)
class App:
def __init__(self,window):
#Button font
self.buttonFont = ("Courier",13,"normal")
#Header
self.header = tk.Label(text = "To Do List\n",font = ("Helvetica",26,"bold"))
self.header.grid()
#Add item button
self.addButton = tk.Button(text = "Add Item",font = self.buttonFont,bg = "green",command = self.OpenAddItem)
self.addButton.grid(row = 1,column = 0,)
#Del item button
self.delButton = tk.Button(text = "Delete Item",bg = "red")
self.delButton.grid(row = 1,column = 1,)
#items frame and stuff
self.itemsframe = tk.Frame()
self.itemsframe.grid(row = 2)
self.item = tk.Label(self.itemsframe,11,"normal"))
def OpenAddItem(self):
#COnfiguring prompt win
self.addPromptWin = tk.Toplevel(root)
self.addPromptWin.title("Prompt")
self.addPromptWin.geometry("375x100")
self.addPromptWin.resizable(False,False)
#Entry label
self.entryLabel = tk.Label(self.addPromptWin,text = "Enter item name:",font = ("Courier","normal"))
self.entryLabel.grid(sticky = tk.E)
#Adding entry
self.entry = tk.Entry(self.addPromptWin,"normal"))
self.entry.grid(row = 0,column = 1)
self.entry.bind("<Return>",lambda e: self.AddItem())
#Add new item button
self.addNewItemButton = tk.Button(self.addPromptWin,text = "Add",command = self.AddItem)
self.addNewItemButton.grid(row = 1,sticky = tk.W)
def AddItem(self):
self.entryValue = self.entry.get()
self.item.config(text = f"1. {self.entryValue}")
self.item.pack()
self.addPromptWin.destroy()
app = App(root)
root.mainloop()
嗨,我的tkinter gui程序遇到问题。 当我调用addItem函数时,而不是每次都创建一个新标签,它只是替换了当前标签。任何帮助将不胜感激!
解决方法
您制作了一个名为Label
的{{1}},并且不断覆盖它,期望它神奇地成为新的self.item
。解决方法很简单〜不要创建Label
。而是创建一个列表,并根据需要将新的self.item
推入列表。这也为您的delete方法奠定了基础〜您可以解压缩缓存中的所有内容,删除所需的项目,然后重新打包缓存中剩余的所有内容。我的示例在其中很重要。我没有为您编写删除方法。
Labels
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。