2017-10-28 56 views
0

我使用Python和Tkinter的開發項目點擊它們後,網頁瀏覽器應該打開Python的Tkinter的:其中,在<strong>文本構件</strong> 變化內容動態根據program.Now在我的文本組件我增加了許多urls.And瀏覽器會自動打開,而不單擊文本

http://effbot.org/zone/tkinter-text-hyperlink.htm我提到這個,現在創建我code.But鏈接我的問題是每當顯示在文本組件甚至內部消除點擊它網址瀏覽器中打開了。

這是我的代碼。

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) 

我的問題: 我需要知道如何打開瀏覽器只上點擊特定文本(超鏈接),而不是當它們被添加到文本widget.I是新來的蟒蛇和tkinter抱歉在代碼段中的任何錯誤。提前感謝。

+0

是'CLICK1 「一種班級的方法? – PRMoureu

回答

1

這裏的問題是,你不能直接把函數傳遞給這個方法hyperlink.add,它會被執行,因爲你用一個參數調用它。 (請注意,在鏈接中顯示的示例中,我們只傳遞函數的引用而不調用它)。

你可以使用lambda表達式,如果該參數是爲所有行相同,但是URL需要改變每一次,所以,你需要使用類似的partial工具:

from functools import partial 

[...] 

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

非常感謝你的想法,它工作。 – krith

+0

不客氣Krith – PRMoureu

相關問題