2017-12-27 10 views
0

Tkinter 목록 상자에 도시 이름이 입력되었습니다. 내가 선택한 값을 잡고 Mainloop 이후의 후속 코드로 전달하고 싶습니다. 다음과 같은 tkinker 코드가 있습니다 :클릭 후 Tkinter 삭제 버튼

master = tk.Tk() 

variable = StringVar(master) 
variable.set(cities_list[0]) # default value 

w = OptionMenu(master, variable, *cities_list) 
w.pack() 

def ok(): 
    print ("value is:" + variable.get()) 
    return variable.get() 
    window.destroy() 


button = Button(master, text="OK", command=ok) 
button.pack() 

mainloop() 


v_list = variable.get().split('-') 

버튼이 루프에 걸려 닫히지 않습니다. 선택 후에 버튼을 닫고 싶습니다. 나는 "window.destroy()"와 "master.destroy()"를 모두 시도했다.

내가 뭘 잘못하고 있니?

+0

[MCVE] (https://stackoverflow.com/help/mcve)가 아닙니다. 적어도 '창'은 무엇입니까? – Nae

답변

2

단추가 destroy이 아니기 때문에 '반환합니다'라는 이유 때문에 단추가 destroy이 아닙니다. 어떤 것은 commandcallback method can't really return anywhere meaningful이기 때문에 나쁘다. 다음과 같은 변경을 수행

some_outer_scope_var = None 

def ok(): 
    global some_outer_scope_var 
    some_outer_scope_var = variable.get() 
    print ("value is:" + variable.get()) 
    master.destroy() 

당신이 some_outer_scope_var 먼저 다음 destroy 모든 GUI에 variable.get()의 값을 저장하는 것이 방법.

+0

변수가 바깥 범위에있는 것으로 나타났습니다. "some_outer_scope_var = variable.get()"을 제거하고 작업을 시작했습니다. – user61629

+0

@ user61629 당신이'Tk'의 인스턴스를 여러 개 가지지 않는 한 그렇게해서는 안됩니다. – Nae