2017-07-26 99 views
-2

是否可以覆盖Entry小部件?Python Tkinter Entry Widget覆盖

我有超过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

https://stackoverflow.com/a/35165723这是一种方法。 – Lafexlos

+1

不断有多久,我的意思是如果它经常比你可能使用标签而不是条目,如果你不使用条目的能力来自己输入文本 +因为你插入(0,索引),我认为有不需要先删除文本,您也应该尝试这种方式 –

+0

在效率成为问题之前,您可能需要拥有数千个条目窗口小部件。 –

回答

0

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

正如您在下面的例子中看到的,它只需要4行代码来创建所有的Entry小部件。列表和for循环。这样做的好处是,您可以使用相同的4行代码来创建尽可能多或少量的入口小部件或任何其他小部件。

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循环更新每个条目,但你也可以使用索引为好。

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

+0

谢谢大家的帮助和建议。最后,我用了Sierra的想法。 – Soichiro