我正在用Tkinter制作一个小程序(实际上是第一个)。该程序应该具有网站徽标,并且在按下该按钮时会打开网站。
google_url = 'https://www.google.com'
def OpenUrl():
webbrowser.open_new(google_url)
button1 = tk.Button(root, command=OpenUrl)
此代码起作用(打包/导入所有内容之后)
现在这是之前的代码:
button1 = tk.Button(root, command=webbrowser.open_new('https://www.google.com'))
我是Python的新手,所以我真的很想了解为什么此更改有效。是Python解释器做了什么吗?现在,这还不是我编写的所有代码,因此,如果您认为我应该表明这一点,然后再问我,但这就是使代码可以工作的区别。 (按下按钮时打开Google。在运行代码之前,它打开了google,但没有打开tkinter)
答案 0 :(得分:0)
为您的第一个项目表示敬意!
您的第一次尝试无效,因为command
arg必须起作用。 webbrowser.open_new('https://www.google.com')
是已被调用并据此求值的函数。现在,它等于open_new()
的返回值(即nothing)。
在单击按钮之前,不会评估OpenUrl
的内容,因为该函数仅在被调用时运行。一个lambda(一个未命名的嵌入式函数)也可以工作:
button1 = tk.Button(root, command= lambda: webbrowser.open_new('https://www.google.com'))
祝您编程愉快!