Python 3.13.0中tkinter Canvas.itemconfigure报错问题求助
解决Tkinter Canvas修改文本时的
-id报错问题 问题原因
报错_tkinter.TclError: unknown option "-id"是因为Tkinter的canvas.create_text方法并不支持id参数,你试图用这个参数标记文本元素以便后续修改,属于参数使用错误。
两种解决办法
方法1:使用元素ID修改
canvas.create_text会返回创建的文本元素的唯一ID,直接保存这个ID,后续用itemconfigure调用即可:
from tkinter import * txfn = ("Arial Bold", 25) window = Tk() window.geometry("250x122") window.title("Clocker") canvas = Canvas(window, width=250, height=120, bg="white") canvas.pack() def main(): # 保存创建文本返回的ID text_id = canvas.create_text(75, 50, text="0:00:00", font=txfn) # 通过ID修改文本内容 canvas.itemconfigure(text_id, text="lol") main() window.mainloop()
方法2:使用标签(Tag)修改
如果需要给多个元素统一操作,或者想给元素起一个易记的标识,可以用tags参数给文本添加标签,后续通过标签名修改:
from tkinter import * txfn = ("Arial Bold", 25) window = Tk() window.geometry("250x122") window.title("Clocker") canvas = Canvas(window, width=250, height=120, bg="white") canvas.pack() def main(): # 给文本添加"clock"标签 canvas.create_text(75, 50, text="0:00:00", font=txfn, tags="clock") # 通过标签名修改文本内容 canvas.itemconfigure("clock", text="lol") main() window.mainloop()
补充说明
- 一个Canvas元素可以添加多个标签,用逗号分隔即可,比如
tags=("clock", "timer")。 - 标签是全局的,如果你给多个元素添加了同一个标签,调用
itemconfigure时会修改所有带该标签的元素。
内容的提问来源于stack exchange,提问作者notsomeone
相关产品推荐
相关产品推荐

