2014-10-10 2 views
0

파이썬 2.6.5에서 다음 코드를 실행하려고합니다. 내가하고 싶은 것은 'Applications'메뉴가있는 메인 윈도우를 보여주는 것입니다. 메뉴에 Apps 사전의 키와 일치해야하는 일련의 명령이 있어야합니다. 명령을 클릭하면 기본 웹 브라우저가 열려 해당 키의 Apps 사전에있는 URL로 이동합니다. 대신 코드를 실행하면 브라우저가 클릭없이 앱 사전의 첫 번째 URL로 열립니다. 도와주세요! 함수를 호출Python Tkinter 메뉴 명령이 작동하지 않습니다.

from Tkinter import * 
import webbrowser 

#Real links are to pages on Intranet. 
Apps={ 
    'Google':'http://www.google.com/', 
    'Yahoo':'http://www.yahoo.com/' 
    } 

def openApp(appURL): 
    webbrowser.open(appURL, new=1, autoraise=1) 
    return None 

root=Tk() 
menubar=Menu(root) 
root.config(menu=menubar) 
appsMenu=Menu(menubar) 
for app in Apps: 
    appsMenu.add_command(label=app, command=openApp(Apps[app])) 
menubar.add_cascade(label='Apps', menu=appsMenu) 
root.mainloop() 

답변

1
appsMenu.add_command(label=app, command=openApp(Apps[app])) 

명령 매개 변수를 바로 호출되는 것을 방지하기 위해, lambda에 싸여 될 필요가있다. 또한 for 루프 내에 바인드 된 명령은 매번 올바른 값을 바인드하기 위해 루핑 변수를 기본 인수로 필요로합니다.

appsMenu.add_command(label=app, command=lambda app=app: openApp(Apps[app])) 
+0

케빈, 답장을 보내 주셔서 감사합니다. 필자는 파이썬과 프로그래밍에 익숙하지 않고 도움을 주셔서 감사합니다. 귀하의 솔루션은 아름답게 작동합니다! –

관련 문제