Python tkinter中的子类标签

Python tkinter中的子类标签,python,tkinter,Python,Tkinter,我需要对标签小部件进行子类化,以便浏览器可以在鼠标单击时打开链接 下面是我到目前为止所做工作的代码片段 from tkinter import * import webbrowser class HyperLinkLabel(Label): def __init__(self, link, *args, **kwargs): Label.__init__(self, *args, **kwargs) self.link = link s

我需要对
标签
小部件进行子类化,以便浏览器可以在鼠标单击时打开链接

下面是我到目前为止所做工作的代码片段

from tkinter import *
import webbrowser

class HyperLinkLabel(Label):

    def __init__(self, link, *args, **kwargs):
        Label.__init__(self, *args, **kwargs)
        self.link = link
        self.bind("<Button-1>", self.click_callback)

    def click_callback(self):

        webbrowser.open_new(self.link)

if __name__ == '__main__':
    master = Tk()
    root = Frame(master)
    label1 = HyperLinkLabel(root, link='https://www.google.com')
    label1.config(text='hello')
    label1.pack()
    root.master.minsize(100, 50)
    root.mainloop()
从tkinter导入*
导入网络浏览器
类HyperLinkLabel(标签):
定义初始化(self、link、*args、**kwargs):
标签._uu初始化(self,*args,**kwargs)
self.link=link
self.bind(“,self.click\u回调)
def click_回调(自):
webbrowser.open_new(self.link)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
master=Tk()
根=帧(主)
label1=HyperLinkLabel(根,链接=)https://www.google.com')
label1.config(text='hello')
标签1.pack()
root.master.minsize(100,50)
root.mainloop()
  • 您应该声明
    master
    (或父)参数并将其传递给
    Label
    构造函数。(
    root
    从调用方的角度)
  • 事件句柄应该有
    event
    参数,即使您不使用它。否则将引发
    TypeError
    异常
  • 打包框架,使其内部的小部件可见

从tkinter导入*
导入网络浏览器
类HyperLinkLabel(标签):
定义初始化(自、主、链接、*args、**kwargs):#
from tkinter import *
import webbrowser

class HyperLinkLabel(Label):
    def __init__(self, master, link, *args, **kwargs):  # <-- pass master parameter
        Label.__init__(self, master, *args, **kwargs)   # <-- pass master parameter
        self.link = link
        self.bind("<Button-1>", self.click_callback)

    def click_callback(self, event):  # <--- missed event parameter
        webbrowser.open_new(self.link)

if __name__ == '__main__':
    master = Tk()
    root = Frame(master)
    label1 = HyperLinkLabel(root, link='https://www.google.com')
    label1.config(text='hello')
    label1.pack()
    root.pack()   # <-- should pack frame; otherwise link widget is not visible
    root.master.minsize(100, 50)
    root.mainloop()