Python - Tkinter中的Matplotlib:工具栏平移和缩放不会改变光标

时间:2016-10-10 17:29:07

标签: python python-3.x matplotlib tkinter

我一直在开发一个tkinter应用程序,其中嵌入了matplotlib图形。我现在遇到的问题是:

虽然工具栏的功能正常工作,但它不会改变光标,因为你无法判断你是否正在缩放,这会造成更糟糕的用户体验。 从我从各种文档和在线教程中看到的,这不应该是一个问题。

根据我的阅读,工具栏甚至应该更换光标更难,因为它在选择平移或缩放时始终覆盖光标。我发布了我的代码的相关部分,如果你看到的东西没有加起来,或者我可能遗漏的任何东西,请告诉我。

任何建议都很受欢迎!

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg

class Controller(tk.Tk): 
    self.canvass = FigureCanvasTkAgg(self.plots, self)
    self.canvass.show()
    self.canvass.get_tk_widget().grid(row=1, column=0, sticky="news") 

    self.toolbar_frame = tk.Frame(self, width=410, height=30)
    self.toolbar_frame.config(relief="sunken", borderwidth=1)
    self.toolbar_frame.pack_propagate(flag=False)
    self.toolbar_frame.grid(column=0, row=3, sticky="w")

    self.toolbar = NavigationToolbar2TkAgg(self.canvass, self.toolbar_frame)
    self.toolbar.pack()
    self.toolbar.update()

事实证明,将工具栏放入框架会导致奇怪的行为。我只是在tkinter嵌入中使用了一个简单的'matplotlib'示例,该示例正在工作并修改它以使用我在代码中执行的框架,并且出现了同样的问题。

我需要框架,因为通常工具栏使用包,我不想因为这个而改变整个布局,因为我一直使用网格。

1 个答案:

答案 0 :(得分:1)

我也遇到过同样的问题,奇怪的是这是由画布和工具栏没有相同的主人造成的。只需制作一个新框架并将画布和工具栏放入其中就可以解决问题。您仍然可以在布局中放置带有网格的框架。