我正在使用 tkinter 使用 Python 3 编写打字练习游戏。 到目前为止,我的代码能够让用户输入一些内容并使用按钮打印他们输入的内容:
import random
from tkinter import *
root=Tk()
a=Canvas(root, width=500, height=500)
a.pack()
paralist = []
x=random.randint(1,10)
file = open("groupproject.txt")
line = file.readline()
for line in file:
paralist.append(line.replace("\n", ""));
a.create_text(250,50, text = "Typing Fun", width = 500, font = "Verdana", fill = "purple")
a.create_text(250,300, text = paralist[x], width = 500, font = "Times", fill = "purple")
a = Entry(root, width = 100)
a.pack()
a.focus_set()
def callback():
s = a.get()
print (s)
b = Button(root, text="Enter", command=callback)
b.pack()
root.mainloop()
我的文本文件基本上是 10 个一行句子。
我想将用户在输入小部件中键入的每个字符存储在变量(或列表或数组)中(无需按 Enter 键)。
非常感谢您提前提供的帮助! :D
最佳答案
条目小部件可以绑定(bind)到关联的 Tkinter 字符串变量(StringVar
类),这将导致 StringVar
实例在条目内容更改时自动更新。以下是原始代码中的相关修改行:
...
a = Entry(root, width = 100)
a_var = StringVar()
a["textvariable"] = a_var
...
现在对 a_var
变量调用 get()
方法将为您提供条目内容,并将字符串传递给其 set()
方法将更新条目。
更进一步,这些关联的变量允许您在每次变量由于条目更改而发生更改时执行函数/方法。如果您想在用户键入时执行某些操作(例如将条目内容与示例句子之一进行比较),这会很有帮助。在回调
函数定义之后添加以下行以添加此功能:
a_var.trace_variable("w", callback)
关于python - 如何将 tkinter 输入小部件中的每个字符与外部文本文件中的行进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16883409/