Pythontkinter:浏览器打开自动而不单击纹理

2024-09-29 01:29:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python和tkinter开发一个项目,其中文本小部件中的内容 根据程序。现在在我的文本小部件中,我添加了许多URL。和单击后,web浏览器应打开。你知道吗

http://effbot.org/zone/tkinter-text-hyperlink.htm我引用它是为了在我的代码。但是现在我的问题是,每当文本小部件上显示url时,浏览器就会打开,而不必点击它。你知道吗

这是我的代码。

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的新手,对于代码中的任何错误,我深表歉意片段。谢谢提前。你知道吗


Tags: 代码文本url部件tkinter浏览器popend
1条回答
网友
1楼 · 发布于 2024-09-29 01:29:28

这里的问题是,您不能将函数直接传递给这个方法hyperlink.add,因为您使用参数调用它,所以它将被执行。(请注意,在链接中显示的示例中,我们只传递函数的引用而不调用它)。你知道吗

如果所有行的参数都相同,则可以使用lambda表达式,但url每次都需要更改,因此,需要使用partial工具:

from functools import partial

[...]

Lb1.insert(END,restitle,hyperlink.add(partial(click1, resurl[0])))

相关问题 更多 >