2016-09-10 4 views
0

この非常に単純なコードがなぜ機能しないのか理解できません。基本的には、あなたが入力したものを印刷することになっています。エラーなしで実行されますが、入力ウィジェットに何かを入力して「送信」ボタンを押すと、何も印刷されません。私はPython 3.xxを使用しています。あなたがする必要がどのような簡単なプログラムのためにエントリー関数が機能しない

from tkinter import * 

window = Tk() 

def GET(): 
    typed = e.get() 
    print(typed) 

e = Entry(window) 
e.pack() 
b = Button(window, text = "Submit", command = GET()) 
b.pack() 
window.mainloop() 
+0

質問する前に調査やデバッグを行いましたか?この種の問題は何十回も尋ねられています。 –

+0

@BryanOakley私は、 "()"が大きな違いになるとは思わなかった。 – Vitalynx

答えて

0

GET代わりのGET()にコマンドを設定されています。

from tkinter import * 

window = Tk() 

def GET(): 
    typed = e.get() 
    print(typed) 

e = Entry(window) 
e.pack() 
b = Button(window, text = "Submit", command = GET) # GET not GET() 
b.pack() 
window.mainloop() 

さて、それに応じてGETを実行します:あなたがやらなければならないことは、それが戻り値に渡すためのパスではなく、完全な関数呼び出し、参照されています。コールバックは、関数の参照だけを必要とし、戻り値を取得する関数呼び出しは必要としません。このインスタンスではNoneであり、ボタンは何もしません。

+0

戻り値の意味を明記することはできますか?私はPythonの初心者です – Vitalynx

+0

関数を呼び出すと、呼び出し先に値を返すことができます。基本的には、操作を実行してから値を返す関数です。関数*にはreturn文*がないので、Noneです。 [doc](https://docs.python.org/2/reference/simple_stmts.html#the-return-statement)のリンクがあります。 – Li357

+0

申し訳ありませんが、助けてくれてありがとう! – Vitalynx

0

b = Button(window, text = "Submit", command = GET())

command=GET()を行うことによって、あなたが機能GETを呼び出しているし、その後command引数にその戻り値(この場合はNone)を渡すことに注意してください。

代わりにcommand=GETを実行する必要があります。これにより、戻り値ではなくGETcommand引数に渡されます。

+0

ありがとうございました:) – Vitalynx

関連する問題