Python Tkinter Entry Widget覆盖

时间:2017-07-26 11:45:08

标签: python tkinter

是否可以覆盖Entry小部件?

我有超过10个条目小部件,它们在一个while循环中不断更新,我担心效率。

 def update_data(self):
    if(index <= 1):
        self.n_entry.insert(END, index)
    else:
        self.a_entry.delete(0, END)
        self.b_entry.delete(0, END)
        self.c_entry.delete(0, END)
        self.d_entry.delete(0, END)
        self.e_entry.delete(0, END)
        self.f_entry.delete(0, END)
        self.g_entry.delete(0, END)
        self.h_entry.delete(0, END)
        self.i_entry.delete(0, END)
        self.l_entry.delete(0, END)

        self.a_entry.insert(0, index)
        self.b_entry.insert(0, index)
        self.c_entry.insert(0, index)
        self.d_entry.insert(0, index)
        self.e_entry.insert(0, index)
        self.f_entry.insert(0, index)
        self.g_entry.insert(0, index)
        self.h_entry.insert(0, index)
        self.i_entry.insert(0, index)
        self.l_entry.insert(0, index)

以上解决方案是更新条目小部件的唯一方法吗?

1 个答案:

答案 0 :(得分:0)

以下是一个简单示例,说明如何使用列表来存储所有输入字段。

正如您在下面的示例中所看到的,只需4行代码即可创建所有Entry小部件。列表和for循环。这样做的好处是你可以使用相同的4行代码来创建任意数量的Entry小部件或任何其他小部件。

from tkinter import *


root = Tk()

entry_list = []

for i in range(10):
    entry_list.append(Entry(root))
    entry_list[i].pack()

def update_entry_fields():
    for i in entry_list:
        i.delete(END)
        i.insert(0, "Test")

btn1 = Button(root, text="Test", command = update_entry_fields)
btn1.pack()

root.mainloop()

这个例子只是使用for循环来更新每个条目,但你也可以使用索引。

你也可以使用字典来做同样的事情。