简体   繁体   English

如何在 matplotlib 中保留默认的 cursor?

[英]How to keep default cursor in matplotlib?

I'm using matplotlib with tkinter:我正在使用 matplotlib 和 tkinter:

from tkinter import *
import matplotlib.pyplot as plt
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk

root = Tk()

graph_frame=Frame(root,bg="red",height=10,width=10)
graph_frame.pack(side=TOP)

fig = Figure(figsize=(5, 4), dpi=100)
a=fig.add_subplot(1,1,1)

x = [1,3,12,15,1]
y = [10,9,8,55,19]

a.plot(x,y)

canvas = FigureCanvasTkAgg(fig, master=graph_frame)  # A tk.DrawingArea.
canvas.draw()
canvas.get_tk_widget().pack(side=TOP, expand=1)

toolbar = NavigationToolbar2Tk(canvas, graph_frame) # toolbar
toolbar.update()
canvas.get_tk_widget().pack(side=TOP, expand=1)

root.mainloop()

I want the cursor to stay in default mode instead of magnifying glass cursor or moving cross cursor when clicking on zoom or pan respectively我希望 cursor 在分别单击缩放或平移时保持默认模式而不是放大镜 cursor 或移动十字 cursor

How do I achieve this?我如何实现这一目标?

You can override set_cursor method of your canvas.您可以覆盖set_cursor的 set_cursor 方法。
Mouse cursor won't change for any tool.鼠标 cursor 不会因任何工具而改变。

Here is your modified code:这是您修改后的代码:

from tkinter import *

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
from matplotlib.figure import Figure


def set_cursor_custom(cursor):
    """Ignore any cursor changes"""
    pass


root = Tk()

graph_frame = Frame(root, bg="red", height=10, width=10)
graph_frame.pack(side=TOP)

fig = Figure(figsize=(5, 4), dpi=100)
a = fig.add_subplot(1, 1, 1)

x = [1, 3, 12, 15, 1]
y = [10, 9, 8, 55, 19]

a.plot(x, y)

canvas = FigureCanvasTkAgg(fig, master=graph_frame)  # A tk.DrawingArea.
# Override set_cursor
canvas.set_cursor = set_cursor_custom

canvas.draw()
canvas.get_tk_widget().pack(side=TOP, expand=1)

toolbar = NavigationToolbar2Tk(canvas, graph_frame)  # toolbar
toolbar.update()
canvas.get_tk_widget().pack(side=TOP, expand=1)

root.mainloop()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM