You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让插入Tkinter Text组件中的图片支持点击事件?

Tkinter Text组件中实现可点击图片的解决方法

你遇到的问题根源是:image_create方法返回的并不是可用于tag_bind的有效标签名,它返回的是Tkinter内部用于标识图片的字符串,没法直接用来绑定事件。

解决步骤很简单,自己定义一个标签,给图片加上这个标签后再绑定事件:

  1. 自定义一个标签名称(比如"clickable_img")
  2. 插入图片时通过tags参数把这个标签关联到图片上
  3. 针对这个自定义标签绑定点击事件

修改后的完整代码:

from tkinter import Tk, Text
from PIL import Image, ImageTk

def on_image_click(event):
    # 这里写图片点击后的逻辑
    print("图片被点击啦!")

root = Tk()
txtbox = Text(root)
txtbox.pack(padx=10, pady=10)

path = "test.png"  # 替换成你的图片路径
my_image = ImageTk.PhotoImage(file=path)

# 插入图片并添加自定义标签
txtbox.image_create(txtbox.index('insert'), image=my_image, tags=("clickable_img",))
# 绑定自定义标签的左键点击事件
txtbox.tag_bind("clickable_img", "<Button-1>", on_image_click)

# 关键:保留图片对象引用,防止被垃圾回收
txtbox.image_ref = my_image

root.mainloop()

额外提醒:

  • 一定要保留图片对象的引用(比如上面的txtbox.image_ref = my_image),否则Python垃圾回收会把图片对象销毁,导致图片显示不出来
  • 如果有多个图片需要绑定相同的点击事件,只需要给它们都加上同一个自定义标签即可,不用重复绑定

内容的提问来源于stack exchange,提问作者Edward

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:01:33