2016-10-13 18 views
0

Python 3.4でTkinterを使ってグラフィカルインタフェースを作成しました。私のスクリプトでは、ユーザーが値を入力できる入力スペースを生成するためにttk.Entryを使用しています。ユーザが値を入力した後でエントリを確認してください

ユーザーがチッピングを終了したときにアクションを実行することは可能ですか?関数を呼び出しますか?私はそれが不可能だった場合は、ボタンを使用しています。ここで

は、コードの抜粋です:

ttk.Label(mainframe, text="Enter your data path", font=('Times', '14', 'bold italic')).grid(column=1, row=2, sticky=E) 

path_frame = StringVar() 
input_path_frame = ttk.Entry(mainframe, width=100, textvariable=path_frame) 
input_path_frame.grid(column=2, row=2, columnspan=2, sticky=(N)) 

私は「input_path_frame」の気力あるときにイベントを持っていると思います。

はあなたがFocusOutイベントマネージャ機能を追加することができ、あなたの時間

+0

は、あなたがこれまで試したどのような私たちを見ることができますか?既存のコードはどのように見えますか? –

+0

ユーザーが入力を完了したらどういう意味ですか?彼らがいつ入力を終えたかをどのように知っていますか?テキストボックスの内容を取得したい場合は、 'input_path_frame.get()'を実行することができます。 –

+0

残念ながら、私は機能面で何も試していません。私はグラフィック部分だけでした。私は何かをする方法を見つけることはありません。私にはバグはありません。 – White

答えて

1

いただきありがとうございます。このイベント・マネージャーは、すぐにユーザーがフィールドに入力を終え、何か他に移動したように実行します:

input_path_frame.bind('<FocusOut>', 
    lambda e, strvar=path_frame: check_field(e, strvar) 
) 
# check_field function would be executed as soon as the focus leaves the field 

ここcheck_field機能がinput_path_frameフィールドが空であるかどうかをチェックするために使用されます。

それはこのようなものになるだろう:

def check_field(e, strvar): 
    # do stuff 
    # check if empty 
    # run tests etc 
    return strvar.get() 

あなたは同時に結果キーを取得したい場合は、ネストでき、2つのイベント<FocusIn><Key>のような機能を管理します。そして、アンバインドすることができます<FocusOut><key>

input_path_frame.bind("<FocusIn>", lambda e: key_bind_func) 
input_path_frame.bind("<FocusOut>", lambda e: key_unbind_func) 
関連する問題