나는 간단한 Python-Tkinter 응용 프로그램을 만들고 있습니다. 다음은 지금 가지고있는 코드의 단순화입니다.Tkinter : optionmenu 위젯을 사용하여 함수를 호출하는 방법
from Tkinter import *
root = Tk()
def function(x):
if x == "yes":
a.set("hello")
else:
a.set("bye")
#-----------------------------
a = StringVar()
a.set("default")
oc = StringVar(root)
oc.set("Select")
o = OptionMenu(root, oc, "yes", "no", command=function)
o.pack()
z = a.get()
print z # prints default
root.mainloop()
은이 코드는 콘솔에 "여보세요"또는 "안녕"인쇄 할 대신은 "기본값은"인쇄합니다.
나는이 작품을 만들려고했지만 어떻게 든 나는 그것을 알아낼 수 없다.
z = function("yes")
print z #prints hello
나 : 내가 Optionmenu 위젯을 사용하는 대신 직접 함수를 호출하는 경우 코드는 잘 작동
z = function("no")
print z #prints bye
이 때 "안녕" "안녕"인쇄하거나하지 않는 이유 누군가가 설명 할 수 Optionmenu 위젯을 사용합니다. 그리고 라인 위의 파트를 변경하지 않고 변수 z를 사용할 수 있도록 수정하는 방법은 무엇입니까?
감사합니다.
죄송합니다. 제 원래 질문을 편집했는데, 서브 함수가 결국 필요하지 않았습니다 ... 답변 해 주셔서 감사합니다! 하지만 어떻게 z = "bye"를 z = "hello"로 바꾸려면 Optionmenu 위젯을 사용하면 될까요? – Roundhouse
지금 그것을 확인하십시오. 당신이해야 할 일은 어떤 조건에 따라 변경되도록'function'을 설정하는 것입니다 - 그것은 현재 선택된 옵션을 입력으로 가져옵니다. 'z'는 항상 함수의 범위 밖에서'default'를 반환 할 것이므로 - 함수의 범위 내에서'a.get()'을 출력하십시오. – JoshieSimmons
그래서 (함수 내부에서 변경된) 변경된 값을 z (함수 외부)에 할당 할 수 없습니까? – Roundhouse