python - 使用 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.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 循环!但是如果没有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
块来捕获它。