2017-02-14 1 views
0

작은 Tkinter 프로그램에서 작업을 시작했는데 이름을 입력하라는 메시지가 나타나면 제출을 클릭하면 "내 세계에 오신 것을 환영합니다"라는 메시지가 표시됩니다. 입력을 검색하여 새 창에 표시하거나 새 정보로 창을 업데이트하는 데 문제가 있지만 Py_Var1을 항목 이름으로 표시합니다. 새 창에서 정보를 표시하려고하거나 잘못된 함수를 사용하고 있기 때문에 내가 잘못 했나요?tkinter 디스플레이 업데이트 또는 재설정

는 여기가 문제가 당신이 Tkinter를 할 수없는 파괴 된 후 창을 파괴하기 전에 할당 된 변수에 접근하려고했던 것을 생각 내 코드

from tkinter import * 

root = Tk() 

#Functions 

def info(): 
    a= entry_1.get() 


def close_window(root): 
     root.destroy() 
def comb(event=None): 
     info() 
     close_window(root) 



#Display 
input_1 = Label(root, text=" Name: ", bg= "light grey", fg="blue", font=("Arial", 16)) 
entry_1 = Entry(root, bg= "white", fg= "black", bd= 5, relief= SUNKEN, font=("Arial", 12)) 
button = Button(root, text="Submit", command=comb, bd= 6, relief= RAISED, fg='blue', font=("Arial", 12)) 
root.bind("<Return>", comb) 

aVar = StringVar(entry_1.get()) 
aVar.set(aVar) 
#entry display 
input_1.grid(row=1, sticky=E) 
entry_1.grid(row=1, column=1) 
button.grid(row=3, column=1) 

root.mainloop() 
##Second Window 
root = Tk() 

Var = StringVar() 
Var.set(info) 

t1 = Label(root, text="Welcome") 
t2 = Label(root, text= Var) 
t3 = Label(root, text="to my world") 

#Display 

t1.grid(row=1, column=1) 
t2.grid(row=1, column=2) 
t3.grid(row=1, column=3) 

root.mainloop() 
+0

이 사이트에서'PY_VAR1'을 (를) 검색해보십시오. –

+0

[PY \ _VAR0 또는 PY \ _VAR1을 (를) 사용하여 입력 값을 얻는 방법] (http://stackoverflow.com/questions/23986010/how-to-get- entry-value-using-py-var0-or-py-var1) – zanussi

답변

0

입니다. 전역 변수가 필요합니다. 이제 코드가 작동합니다.

from tkinter import * 

root = Tk() 

#Functions 

def info(): 
    global a 
    a= entry_1.get() 


def close_window(root): 
     root.destroy() 
def comb(event=None): 
     info() 
     close_window(root) 



#Display 
input_1 = Label(root, text=" Name: ", bg= "light grey", fg="blue", font=("Arial", 16)) 
entry_1 = Entry(root, bg= "white", fg= "black", bd= 5, relief= SUNKEN, font=("Arial", 12)) 
button = Button(root, text="Submit", command=comb, bd= 6, relief= RAISED, fg='blue', font=("Arial", 12)) 
root.bind("<Return>", comb) 


#entry display 
input_1.grid(row=1, sticky=E) 
entry_1.grid(row=1, column=1) 
button.grid(row=3, column=1) 

root.mainloop() 
##Second Window 
root = Tk() 

t1 = Label(root, text="Welcome "+str(a)+" to my world") 
##t2 = Label(root, text= Var) 
##t3 = Label(root, text="to my world") # cleaner this way 

#Display 

t1.grid(row=1, column=1) 
#t2.grid(row=1, column=2) 
#t3.grid(row=1, column=3) 

root.mainloop() 
0

오류가 많고 논리가 없기 때문에 실행되지 않습니다. 이유가없는 많은 함수를 사용하며 그 중 아무 것도 값을 반환하지 않습니다. 또한, 루트 위젯을 닫는 엔트리 위젯을 파괴하고 그 후에는 을 반환합니다. 아무 것도 반환하지 않는 함수를 사용하여 방금 파괴 한 항목에서 텍스트를 가져 오라고 요청하는 중입니다. 루트 창을 파괴하지 않고 최상위 창을 사용하더라도 함수가 아무 것도 반환하지 않기 때문에이 프로그램이 작동하지 않습니다.

기본 사용법을 이해하지 못한 것 같습니다. 좀 더 복잡한 것을 시도하기 전에 간단한 프로그램으로 함수를 가지고 놀아보십시오.