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()