2016-12-25 7 views
-2

ボタンを押さずに、スクリプトを実行したときに私がautoと呼んでいた機能がなぜ実行されるのか分かりません。今モジュールの機能が自動実行されていますか?

import tkinter 
from tkinter import filedialog 


root = tkinter.Tk() 
root.title("fool") 
root.geometry("300x300") 
br = tkinter.Button(root, text ="Carica File", command = filedialog.askopenfile(mode="r")) 
br.pack() 
+0

あなたの質問は何ですか?それはかなり不明です。 – MarkyPython

答えて

0

、あなたはcommandパラメータの呼び出し

filedialog.askopenfile(mode="r") 

の結果を渡しています。この結果を得るには、関数が実行され、すぐにダイアログが表示されます。あなたはおそらく、やりたいことは、あなたが1

として
def foo(): 
    filedialog.askopenfile(mode="r") 

を定義し、Buttonコールで

command = foo 

を使用することができますので、ちょうど、ボタンが押されたときに呼び出す関数の名前を提供しています。上のコードでは、代わりにcommand = foo()(関数を実行する)に対応し、command = fooには対応していません。

あなたが同じ行に全力を尽くす、と余分な機能を定義しないようにしたい場合は、あなたもラムダを使用して書くことができます:

command = lambda: filedialog.askopenfile(mode="r") 
関連する問題