Python Tkinter画布和可以使用Matplotlib工具栏的项目?

Python Tkinter画布和可以使用Matplotlib工具栏的项目?,python,matplotlib,tkinter,Python,Matplotlib,Tkinter,我用Tkinter编写了一个小型GUI程序,因为我喜欢将更新排队到mainloop以进行后续项目更新的功能,以便创建由数据更改引起的循环颜色变化的交互式动画 (这是我发现matplotib不能很好地处理的问题,即如果我使用补丁,并且我想更新补丁的颜色,我发现我必须在现有补丁的基础上添加一个新补丁,这会留下颜色残留) 但是,我想从Matplotlib的工具栏中获益,这样我就可以使用缩放和平移功能 为了简单起见,我正在试验如何使用一个小测试程序来实现这一点,并且在同一个窗口中获得了matplotli

我用Tkinter编写了一个小型GUI程序,因为我喜欢将更新排队到mainloop以进行后续项目更新的功能,以便创建由数据更改引起的循环颜色变化的交互式动画

(这是我发现matplotib不能很好地处理的问题,即如果我使用补丁,并且我想更新补丁的颜色,我发现我必须在现有补丁的基础上添加一个新补丁,这会留下颜色残留)

但是,我想从Matplotlib的工具栏中获益,这样我就可以使用缩放和平移功能

为了简单起见,我正在试验如何使用一个小测试程序来实现这一点,并且在同一个窗口中获得了matplotlib和tkinter。。。但是变焦不起作用

我有两周的Matplotlib经验,还有几天的Tkinter经验,因此请纠正我的任何不准确陈述或添加其他建议

以下是我为测试matplotlib缩放不起作用而编写的小程序:

import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure
import sys
from Tkinter import *
import matplotlib.backends.backend_tkagg as tkagg




class App:

    def __init__(self, master):

        self.frame = Frame(master, bg='#FFFFFF', height=1000, width=1000,
                           borderwidth=1, relief=RAISED)
        self.frame.pack(expand=YES, fill=BOTH)

        self.button = Button(
            self.frame, text="QUIT", fg="red", command=self.frame.quit
            )
        self.button.pack(side=BOTTOM)

        self.hi_there = Button(self.frame, text="Hello", command=self.say_hi)
        self.hi_there.pack(side=BOTTOM)

        ###
        # Creating a canvas for Tk items
        self.tkcanvas = Canvas(self.frame, height=600, width=600)
        self.tkcanvas.config(background='yellow')
        self.tkcanvas.pack()
        self.tkcanvas.create_rectangle(0,0,100,100,fill='blue')

        # Hoping to utilize the mpl toolbar for zooming function by doing:
        self.fig = Figure(figsize=(4,.5))
        self.mplcanvas = FigureCanvasTkAgg(self.fig, master=self.frame)
        self.mplcanvas.get_tk_widget().pack(side='bottom', fill='both')
        self.mplcanvas._tkcanvas.pack(side='bottom', fill='both', expand=1)

        #
        self.mpltoolbar = NavigationToolbar2TkAgg( self.mplcanvas, master )
        self.mpltoolbar.update()
        self.mpltoolbar.pack()
        ###


    def say_hi(self):
        print "hi there, everyone!"

root = Tk()

app = App(root)

root.mainloop()
root.destroy()

仅供参考,有几种方法可以更改matplotlib修补程序的颜色。(例如设置面部颜色、设置边缘颜色)。在python提示符下键入help('matplotlib.patches.Circle')。