2017-11-14 5 views
0

내 기능은 내가 버튼 클릭에 엔트리 상자에 입력 한 값을 반환하지 않습니다 :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 ** 함수 값이 반환되고 –

+0

, 그냥 반환 아니에요의 글로벌 ** 발 ** 변수 외부를 선언 할 수 있습니다. –

+2

어디에서 반환 되길 기대합니까? 버튼을 클릭 할 때 반환 값을 수신 대기하는 것은 없습니다. –

답변

2

아무것도 코드에 이상이 없습니다. 하지만 이해가 정확하지 않습니다 :

이 줄을 실행할 때 : print(onclick2()) 프로그램을 시작할 때 비어있는 입력 위젯의 내용을 인쇄하려고합니다. 그래서 그것은 정상적으로 당신은 터미널에서 아무 것도 보이지 않습니다. 당신은 내가 위에서 설명한 것에 해당하는 것은 터미널에 인쇄 None을 볼 수,

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

을이 간단한 변경으로 :

다음과 같이 약간 콜백을 수정, 엔트리 위젯의 내용을 참조하십시오. 이제 엔트리 위젯 안에 뭔가를 입력하고 버튼을 클릭하십시오. 입력 한 내용이 마침내 출력 (터미널)에 나타납니다.

-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'을 사용했으며 텍스트에 구체적으로 명시했습니다 * "내 함수는 값을 반환하지 않습니다"*. 인쇄 기능은 그들이 요구하는 것이 아니며 그들이 요구 한 반환 기능입니다. –