Python 2.7 Tkinter打开webbrowser点击

时间:2012-01-05 12:41:00

标签: python tkinter

from Tkinter import *
import webbrowser

root = Tk()
frame = Frame(root)
frame.pack()

url = 'http://www.sampleurl.com'

def OpenUrl(url):
    webbrowser.open_new(url)

button = Button(frame, text="CLICK", command=OpenUrl(url))

button.pack()
root.mainloop()

我的目标是在单击GUI小部件中的按钮时打开一个URL。但是,我不是 确定如何做到这一点。当我运行脚本而不点击时,Python会打开两个新窗口 任何东西。此外,单击按钮时没有任何反应。

2 个答案:

答案 0 :(得分:4)

你应该使用

button = Button(root, text="CLCK", command=lambda aurl=url:OpenUrl(aurl))

这是在需要参数时发送回调的正确方法 来自here

  

常见的初学者错误是在何时调用回调函数   构建小部件。也就是说,而不是只给予   函数的名称(例如“回调”),程序员添加括号和   函数的参数值:

     

如果这样做,Python将在创建之前调用回调函数   小部件,并将函数的返回值传递给Tkinter。 Tkinter的   然后尝试将返回值转换为字符串,并告诉Tk   激活按钮时调用具有该名称的函数。这是   可能不是你想要的。

     

对于像这样的简单情况,您可以使用lambda表达式作为链接   在Tkinter和回调函数之间:

答案 1 :(得分:0)

或者,您不必将URL作为命令的参数传递。

显然,你的OpenUrl方法在这种情况下会打开一个URL,但它会起作用。

from Tkinter import *
import webbrowser

url = 'http://www.sampleurl.com'

root = Tk()
frame = Frame(root)
frame.pack()

def OpenUrl():
    webbrowser.open_new(url)

button = Button(frame, text="CLICK", command=OpenUrl)

button.pack()
root.mainloop()