2017-11-14 13 views
0

My機能は、私は、ボタンのクリックで、エントリーボックスに入力された任意の値を返すされていません。tkinter:値を返さないコールバック?

from tkinter import *  
import os 


def onclick2():  
    val = box.get() 
    return(val)  
root = Tk()  
box = Entry(root)  
box.pack()  
buttonfortxtbox = Button(root, text="Check Result", font=('Cooper Black', 9), bd=10, width=20,command=onclick2)  
buttonfortxtbox.pack(anchor = S)  
print(onclick2())  
root.mainloop() 
+0

** onclick2 **の外でグローバル変数** val **を宣言できます。 –

+0

値は返されており、有用な場所には返されません。 –

+2

どこから返されると期待していますか?ボタンをクリックすると、何も戻り値をリッスンしません。 –

答えて

2

何もあなたのコードが間違っているん。しかし、あなたの理解は正確ではありません:

この行を実行すると:print(onclick2())プログラムを最初に起動するときに空のエントリウィジェットの内容を印刷しようとしています。だから、これは完全に正常です。ターミナルでは何も表示されません。

次のように少しあなたのコールバックを修正し、エントリウィジェットの内容を表示するには:

def onclick2(): 
    val = box.get() 
    print(val) 
    # You can remove "return val" as it is completely useless for your context 

をこの単純な変更により、あなたはNoneは事は、私は上記のものに対応ターミナルに印刷表示されます。入力ウィジェット内に何かを入力し、ボタンをクリックします。入力したものが最終的に出力(端末)に表示されます。

-1

エントリウィジェットのコンテンツを印刷しようとしていますが、間違ったコンテンツを受け取るためにエントリの変数を使用しています。あなたのエントリーウィジェットの内容をあなたの端末にプリントアウトすることもできます。

from tkinter import * 


def onclick2(): 
    val = boss.get() 
    print(val) 



root = Tk() 

boss = StringVar() # to receive the content in the entry 

box = Entry(root , textvariable=boss) 
box.pack() 

buttonfortxtbox = Button(root, text="Check Result", font=('Cooper Black', 
9), bd=10, width=20,command=onclick2) 
buttonfortxtbox.pack(anchor = S) 

    #print(onclick2()) # don't need to call this 

root.mainloop() 
+0

OPは*何も "印刷"しようとしていません、彼らは 'return'を使ってテキストに具体的に述べています*"私の関数は値を返さない "*。印刷機能は彼らが求めているものではなく、彼らが求めてきた返品機能です。 –

関連する問題