2016-11-27 19 views
-1
refreshButton = Button(frameList, text ="Refresh",command = print("pressed")) 
    refreshButton.place(x=50, y=50) 

ボタンが押されるたびにこのコードが「押されて」印刷されないのはなぜですか?Python Tkinterボタン

エラーメッセージはありません。問題はprint( "pressed")が実行されないということです。

答えて

0

ボタンコマンドは、lambdaまたはその他の機能を使用しない限り、パラメータを指定できません。代わりに、ボタンを押したときに呼び出す独自の関数を作成する必要があります。

def Refresh(*args): 
    print("pressed") 
    # do stuff 

refreshButton = Button(frameList, text ="Refresh",command = Refresh) 
refreshButton.place(x=50, y=50) 

あなたがしたいのはprint("pressed")なので、これが別の解決策です。 lambdaは、ボタンによって与えられたすべてのパラメータをキャッチし、あなた自身のパラメータを持つ関数を呼び出してみましょう:)

refreshButton = Button(frameList, text ="Refresh",command= lambda *args: print("pressed")) 
+0

私は、後に別のオブジェクトからの関数を呼び出したいです。 print( "pressed")は、ボタンをテストするための単なる一時的なものでした。 – Peanutpower

+0

他の2つの答えと同じあなた自身の答えをなぜ追加したのか分かりませんが...。 –

+0

_ "...ラムダを使用しない限り" _は完全に真ではありません。 'lambda'以外の引数を渡す方法は他にもあります。 –

1

使用lambdaます:

refreshButton = Button(frameList, 
    text ="Refresh", 
    command = lambda: print("pressed") 
)