如何在Python的Tkinter Canvas中添加可点击文本超链接?
修复Tkinter Canvas可点击文本链接的问题
你的代码无法正常工作的核心原因是:Canvas的create_text返回的是文本项的ID,不是Tkinter组件对象,不能直接调用bind方法。需要使用Canvas的tag_bind方法来为文本项绑定事件。
以下是修正后的完整代码:
from tkinter import * import webbrowser def callback(url): webbrowser.open_new(url) home = Tk() home.title("OneLink") c = Canvas(home, width="700", height="500") c.pack() home_text = c.create_text(350, 50, text="Welcome to a Python Program That Only Gives One Link!", fill="black", font=("Helvetica 10")) # 创建文本时指定标签,也可直接用返回的item ID main_website_link = c.create_text(350, 100, text="Google", fg="blue", cursor="hand2", tags="google_link") # 使用Canvas的tag_bind绑定点击事件 c.tag_bind("google_link", "<Button-1>", lambda e: callback("http://google.com.au")) home.mainloop()
关键改动说明:
- 给
create_text添加tags="google_link"参数,为文本项标记标签(也可以直接用返回的main_website_link这个item ID替代标签名) - 调用Canvas对象的
tag_bind方法,而非文本项ID的bind方法,来绑定<Button-1>点击事件 - 补充
home.mainloop(),确保窗口能正常启动运行
内容的提问来源于stack exchange,提问作者AngusAU293
相关产品推荐
相关产品推荐

