Python 使用tkinter从文件中读取行
我已经做了一个打字指导项目,现在我想做一个GUI版本。因此,我试图逐行读取一个文件到tkinter,用户必须逐行输入。这意味着,如果他正确地键入第一行,第二行就会出现,直到最后 这是我的代码:Python 使用tkinter从文件中读取行,python,csv,tkinter,Python,Csv,Tkinter,我已经做了一个打字指导项目,现在我想做一个GUI版本。因此,我试图逐行读取一个文件到tkinter,用户必须逐行输入。这意味着,如果他正确地键入第一行,第二行就会出现,直到最后 这是我的代码: import tkinter as tk root = tk.Tk() root.resizable(True, True) frame = tk.Frame(root) frame.pack() def callback(sv): print(sv.get()) return sv.
import tkinter as tk
root = tk.Tk()
root.resizable(True, True)
frame = tk.Frame(root)
frame.pack()
def callback(sv):
print(sv.get())
return sv.get()
sv = tk.StringVar(root)
sv.trace("w", lambda name, index, mode, sv=sv: callback(sv))
with open('sentences.TXT', 'r') as myfile:
cnt = 1
for line in myfile:
# var = tk.StringVar(root)
label = tk.Label(root, textvariable=sv, relief=tk.RAISED)
sv.set(line)
cnt +=1
label.pack()
e = tk.Entry(root, textvariable=sv)
e.pack()
root.mainloop()
我的老师告诉我不要使用循环!但是如果没有for循环,那么,如何逐行打印呢?
我希望有人能想出办法帮我解决这个问题,谢谢 您可以在文件对象上手动调用
next
,以获取下一句话:
import tkinter as tk
root = tk.Tk()
f = open('sentence.txt', 'r')
label = tk.Label(root,text="")
label.pack()
tk.Button(root,text="Click for next",
command=lambda: label.config(text=next(f))).pack()
root.mainloop()
请注意,当迭代器耗尽时,这将引发一个StopIteration
错误-您可以通过创建函数并添加try…except
块来捕获它。您可以使用readline()
获取文件中的下一句话。