首先,有一些注意事项:我将深入探讨一些实现细节。我认为工具栏最近进行了重构,因此其中一些内容可能会随着 matplotlib 的下一个版本而改变。此外,我为光标指定的值仅适用于TkAgg
后端。其他后端的总体概念类似,但是位置cursord
并且后端特定的光标会有所不同。举个例子Qt4Agg
, the cursord
字典在backend_qt4
代替backend_qt4agg
,值是 Qt 游标:例如QtCore.Qt.ArrowCursor
.
正如我在评论中提到的,看看matplotlib 的Cursor widget http://matplotlib.org/examples/widgets/cursor.html。然而,如何自定义 matplotlib 使用的光标这一更广泛的问题有点棘手。
您无法直接更改 matplotlib 使用的光标的原因(例如master.config(cursor='whatever')
)的问题是默认工具栏会覆盖它(工具栏上不同的工具有不同的光标)。
一种选择是不添加工具栏。在这种情况下,您只需调用parent.config(cursor='tcross')
并完成它。但是,您可能希望显示工具栏以便于平移/缩放等。
工具栏对每个工具使用当前光标的字典:backend_tkagg.cursord
。其关键是int
代码,因此通过引用它们更具可读性matplotlib.backend_bases.cursors
。默认工具是cursors.POINTER
.
作为一个简单的例子(为简单起见,我使用pyplot
构建画布、图形等的接口)
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
from matplotlib.backend_bases import cursors
import matplotlib.backends.backend_tkagg as tkagg
# Change the default cursor to any valid TK cursor
# To hide it, you'd use the string "none" (or possibly "no" on windows)
tkagg.cursord[cursors.POINTER] = 'coffee_mug'
fig, ax = plt.subplots()
plt.show()
请注意,您还可以以相同的方式控制任何工具(例如缩放、平移等)的光标。您的选择是cursor.HAND
, cursor.POINTER
, cursor.SELECT_REGION
, and cursor.MOVE
.