【问题标题】:I need to clear a Entry widget in tkinter after press a button按下按钮后,我需要在 tkinter 中清除 Entry 小部件
【发布时间】:2022-01-11 04:17:18
【问题描述】:

我有一个使用 for 循环创建 10 个条目的代码,它将结果保存在一个列表中,以便我可以使用 get,但是我有另一个按钮,我需要删除 10 个条目中写入的内容,我该怎么做这样做?

    for i in range(10):
        entry = Entry(self.lf_mid)
        entry.place(relwidth=0.6, relheight=1/10, relx=0.35, rely=i/10)
        lista_entrys.append(entry)
    
    #this don't work
    bt = Button(self.lf_bot, text='clear', command=entry.delete(0, 'end'))
    bt.pack(side='left', expand=1)

如果你能帮助我,我很感激

【问题讨论】:

  • 如果只需要编辑所有“条目”中的某些值,请尝试通过所有这些值。
  • 您的操作方式与获取数据的方式完全相同,方法是遍历列表。你试过吗?
  • @chickitychinachinesechicken,不,不幸的是,它只有一个 Entry 变量,我有一个 10 的循环,如果我尝试这样做,我将删除最后一个条目
  • 好的,@BryanOakley,你是对的,暂时忘记了列表只保存条目的 id 而不是它们的内容。实际上使用 .delete(0, END) 遍历列表是有效的,谢谢

标签: python for-loop tkinter tkinter-entry


【解决方案1】:

制作一个小部件字典,每次创建小部件时添加到该字典中。然后,无论您想在哪里访问该小部件,例如,如果您想销毁它或更改其配置属性,您都可以通过字典来执行此操作。

想法的骨架:

import tkinter as tk
widgetdict = {}
def maketk():
    root = tk.Tk()
    entry = tk.Entry()
    widgetdict['entry'] = entry
    root.mainloop()

maketk()
widgetdict['entry']['bg'] = '#fff'
widgetdict['entry'].destroy()

进入字典的是条目的指针/地址。只要您尚未在其他地方销毁小部件,您就可以访问。

【讨论】:

  • 谢谢,但这还没有解决我的问题,我需要找到一种方法来清除输入字段,以便我可以用不同的值动态填充它并再次保存
  • 好的,所以缩进你的按钮部分进入 for 循环。这将为每个条目提供一个按钮,其中包含删除该条目的选项。如果需要在for循环之外一次性清除所有条目,则遍历小部件字典,'''for w in widgetdict: widgetdict[w].delete(0,'end')
  • 我已经完成了我需要的工作,我想要的信息保存在一个我忘记的列表中,其中保存了条目 id 而不是值,但谢谢你的朋友。
猜你喜欢
  • 2011-01-16
  • 2018-09-19
  • 1970-01-01
  • 1970-01-01
  • 2022-06-18
  • 1970-01-01
  • 2011-09-09
  • 2019-01-04
  • 1970-01-01
相关资源
最近更新 更多