Python tkinter:浏览器自动打开,无需单击文本
我正在使用python和tkinter开发一个项目,文本小部件中的内容 根据程序动态更改。现在在我的文本小部件中,我添加了许多URL。单击这些URL后,web浏览器应该会打开 我引用它是为了在我的代码中创建超链接。但现在我的问题是,每当文本小部件上显示url时,浏览器就会打开,而不必单击它 这是我的代码。Python tkinter:浏览器自动打开,无需单击文本,python,tkinter,python-webbrowser,Python,Tkinter,Python Webbrowser,我正在使用python和tkinter开发一个项目,文本小部件中的内容 根据程序动态更改。现在在我的文本小部件中,我添加了许多URL。单击这些URL后,web浏览器应该会打开 我引用它是为了在我的代码中创建超链接。但现在我的问题是,每当文本小部件上显示url时,浏览器就会打开,而不必单击它 这是我的代码。 def click1(self,url): webbrowser.open(url) restitle,resthumb,resurl=printit()#title,thumbn
def click1(self,url):
webbrowser.open(url)
restitle,resthumb,resurl=printit()#title,thumbnailimage,url array
while restitle:
raw_data = urllib.request.urlopen(resthumb[0]).read()
tim = PIL.Image.open(io.BytesIO(raw_data))
tim = tim.resize((100, 100), PIL.Image.ANTIALIAS)
timage = ImageTk.PhotoImage(tim)
Lb1.image_create(END, image=timage)
curl=resurl[0]
Lb1.update()
images.append(timage)
Lb1.insert(END,restitle,hyperlink.add(click1(resurl[0])))#Passing url
Lb1.insert(END,"\n")
restitle.pop(0)
resurl.pop(0)
resthumb.pop(0)
我的问题:
我需要知道如何仅在单击特定文本(超链接)时打开浏览器,而不是在将其添加到文本小部件时打开浏览器。我是python新手,tkinter对代码片段中的任何错误表示抱歉。提前感谢。这里的问题,是因为您无法将函数直接传递给此方法
hyperlink.add
,因为您使用参数调用它,所以将执行该函数。(请注意,在链接中显示的示例中,我们只传递函数的引用,而不调用它)
如果所有行的参数都相同,则可以使用lambda表达式,但url每次都需要更改,因此,需要使用类似于partial
工具的工具:
from functools import partial
[...]
Lb1.insert(END,restitle,hyperlink.add(partial(click1, resurl[0])))
click1
是类的方法吗?