我做了一个打开Goog​​le的按钮。我已经解决了问题,但想知道为什么会起作用

时间:2020-01-13 02:47:41

标签: python python-3.x tkinter

我正在用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解释器做了什么吗?现在,这还不是我编写的所有代码,因此,如果您认为我应该表明这一点,然后再问我,但这就是使代码可以工作的区别。 (按下按钮时打开Goog​​le。在运行代码之前,它打开了google,但没有打开tkinter)

1 个答案:

答案 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'))

祝您编程愉快!