tkinter中‘canvas object has no attribute get_tk_widget’错误求解决
解决
canvas object has no attribute get_tk_widget错误 核心原因
新版本Matplotlib(3.4+)中,FigureCanvasTkAgg实例本身已直接作为tkinter兼容的Widget存在,不再需要通过get_tk_widget()方法获取底层tk组件。
修改后的代码示例
try: if canvas: canvas.grid_forget() # 直接调用canvas的grid_forget,无需get_tk_widget() except NameError: # 处理canvas未定义的情况(可选) pass canvas = FigureCanvasTkAgg(fig, master=root) # 无需调用get_tk_widget,直接用canvas作为tk组件 canvas.grid(row=8, columnspan=4, sticky="nsew") # 滚动条绑定直接使用canvas的xview方法 scrollbar = tk.Scrollbar(root, orient="horizontal", command=canvas.xview) scrollbar.grid(row=9, columnspan=4, sticky="ew") canvas.configure(xscrollcommand=scrollbar.set) # 绑定事件直接用canvas对象 canvas.bind('<Configure>', on_canvas_configure)
关键修改点
- 移除所有
get_tk_widget()调用,直接使用FigureCanvasTkAgg实例(即代码中的canvas) - 原代码中
canvas_widget变量可直接替换为canvas,无需额外赋值
内容的提问来源于stack exchange,提问作者Huseyin Cenik
相关产品推荐
相关产品推荐

