2017-08-17 10 views
1

次のコードには2つのメソッドがあり、1つはキーの押下のために別のものをキャプチャするためのメソッドです。私はfocus_setをマウスのクリックではなくキーの押下にしたいが、もしkey_set関数内でfocus_setを使うと、それは機能しない。私はそれをクリックして動作し、主要な機能はうまく動作するマウスの中に入れれば。python Tkinter focus_set()がキープレスイベントをキャプチャするときに正しく動作しません

from tkinter import * 
root = Tk() 

text = '' 
frame = Frame(root, width=100, height=100) 


def key(event): 

    frame.focus_set() # here is the focus set which is not working 
    global text 

    text += event.char 
    print (test) 

def callback(event): 
    #but If I put that same line here, it works 
    print ("clicked at", event.x, event.y) 

frame.bind("<Key>", key) 
frame.bind("<Button-1>", callback) 
frame.pack() 

root.mainloop() 

答えて

1

focus_setは、それが呼び出された後、火災のイベントに影響を及ぼし、それが唯一のキーボードイベントではなく、マウスクリックに影響を与えます。イベントハンドラで呼び出すだけでは、処理されるイベントに影響を与えることはできません。

+0

キーメソッドからテキスト値を返し、a = key( "what is the parameter?")のようなメソッドの外に新しい変数を作成すると、答えに感謝します。パラメータとしてイベントオブジェクトを取得しています。このキーメソッドのパラメータにあるもの –

+0

@ MD.FazlaRabby: 'key'はイベントのデータを使用するので、直接呼び出して戻り値を保存する場合は、オブジェクトに渡す必要がありますコールバックには 'char'パラメータがあります。 –

+0

お返事ありがとうございます、Pythonには "char"変数がありますか?あなたがデモ/例を私に与えることができれば、本当に役に立ちます。 –

関連する問題