2017-10-08 143 views
0

我有一个文本文件,其中包含四个字逐行。假设例如:Python Entry Widget数据自动更新并保存在文本文件中

cat 
mat 
rat 
hat 

我想在进入小部件来显示这些话。像第一个Entry小部件中的“cat”,第二个Entry小部件中的“mat”等等。现在,如果我更新任何Entry小部件的内容,那么它也应该自动更新文本文件。我编写了一些代码来显示Entry窗口小部件,但在那之后我不知道如何实现这一点?

from tkinter import * 
top = Tk() 

with open('C:/Users/jaykr/Desktop/data.txt') as file: 
    data = file.read().split("\n") 

for i in range(len(data)): 
    Entry(top).grid(row=i, column=0) 

top.mainloop() 

回答

1

您可以利用的Tkinter的StringVarvariable class及其trace()方法。这里是一个MCVE:

import tkinter as tk 

root = tk.Tk() 

entry_var = tk.StringVar() 
entry = tk.Entry(root, width=10, textvariable=entry_var) 
entry.pack() 

def autoupdate(*args): 
    with open('test.txt', 'w') as f: 
     f.write(entry_var.get()) 

entry_var.trace('w', autoupdate) 

root.mainloop() 
+0

非常感谢你@mentalita。它只适用于一个Entry小部件,但是,我想要4个以上的小部件,并且数据也应显示在所有小部件中。因此,请求您更新代码以获取更多入门者。 –

+0

@MritunjayKumarjaykr:你不能'请求'我写你的代码给你。恐怕你必须自己去做。我已经给了你一个例子,你如何做你想做的事情,这足以让你开始。 – mentalita

+0

ok @mentalita,让我试试。实际上,主要问题是如何使文本文件行与输入小部件号码之间存在关系。假设我编辑第3条目小部件中的一些文本比第3行文本文件应该更新。 –

相关问题