【问题标题】:Python Tkinter Menu Command Not WorkingPython Tkinter 菜单命令不起作用
【发布时间】:2014-12-06 00:58:17
【问题描述】:

我正在尝试在 Python 2.6.5 中执行以下代码。我想要做的是显示一个带有“应用程序”菜单的主窗口。我希望菜单有一系列命令,这些命令应该对应于 Apps 字典的键。当我单击该命令时,我希望默认 Web 浏览器打开并导航到该特定键的 Apps 字典中的 url。相反,当我执行代码时,浏览器会打开到 Apps 字典中的第一个 url,而无需任何点击。请帮忙!

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()

【问题讨论】:

    标签: python dictionary tkinter command


    【解决方案1】:
     appsMenu.add_command(label=app, command=openApp(Apps[app]))
    

    调用函数的命令参数需要包裹在lambda中,以防止它们被立即调用。此外,在 for 循环中绑定的命令需要循环变量作为默认参数,以便每次都绑定正确的值。

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

    【讨论】:

    • 凯文,感谢您的回复。我是 Python 和编程的新手,非常感谢您的帮助。您的解决方案效果很好!
    猜你喜欢
    • 2017-06-18
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多