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

Tkinter嵌入Matplotlib绘图时Cursor十字光标无法显示问题求助

问题根因

  • 你定义的cursor是局部变量,当前代码块执行结束后就会被Python垃圾回收机制销毁,Matplotlib的事件回调无法持有这个光标实例,因此光标无法正常渲染,同时你后续没有调用过cursor变量,所以Pylance会抛出未访问的警告。
  • useblit=True参数在TkAgg后端的兼容性较差,也是导致光标不显示的常见原因。

解决方法

按照以下两点修改代码即可:

  1. 把cursor变量转为长生命周期的对象,避免被垃圾回收:如果你的代码写在类方法里,就改为self.cursor = Cursor(...);如果写在全局/函数作用域里,也可以直接绑定到canvas对象上,比如canvas.cursor = Cursor(...)。
  2. 把useblit参数设置为False适配Tk嵌入场景。

修改后的代码示例

figure = Figure(figsize=(5, 4), dpi=100)
plot = figure.add_subplot(1, 1, 1)
figure.suptitle(Date, fontsize=12)
plot.plot(x, y, color=Color)                                

canvas = FigureCanvasTkAgg(figure, root)
canvas.get_tk_widget().place(x=4,y=200)

toolbar = NavigationToolbar2Tk(canvas, root, pack_toolbar=False)
toolbar.update()
toolbar.place(x=4,y=600)

# 修改部分:将cursor绑定到canvas避免被回收,关闭useblit
canvas.cursor = Cursor(plot, useblit=False, horizOn=True, vertOn=True, color="green", linewidth=2.0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 01:45:10