1

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()

私のテキスト ファイルは、基本的に 1 行の 10 文です。

ユーザーが入力ウィジェットに入力している各文字を、入力中に (Enter キーを押さずに) 変数 (またはリストまたは配列) に格納したいと思います。

よろしくお願いします!:D

4

1 に答える 1

1

エントリ ウィジェットは、関連付けられた Tkinter 文字列変数 (StringVarクラス) に関連付けることができます。これによりStringVar、エントリの内容が変更されたときにインスタンスが自動的に更新されます。元のコードから関連する変更された行は次のとおりです。

...
a = Entry(root, width = 100)
a_var = StringVar()
a["textvariable"] = a_var
...

get()変数に対してメソッドを呼び出すとa_varエントリの内容が得られ、そのメソッドに文字列を渡すとset()エントリが更新されます。

さらに一歩進んで、これらの関連付けられた変数を使用すると、エントリの変更により変数が変更されるたびに関数/メソッドを実行できます。これは、入力内容を例文の 1 つと比較するなど、ユーザーが入力している間に何らかのアクションを実行したい場合に役立ちます。この機能を追加するには、関数定義のに次の行を追加します。callback

a_var.trace_variable("w", callback)
于 2013-06-02T14:37:03.607 に答える