2014-03-27 89 views
0

我正在运行以下脚本。该脚本必须生成一个圆圈。Tkinter中的Matplotlib输出

import pyplot as plt 

circle1=plt.Circle((0.5,0.5),.2,color='g', fill=False) 
fig=plt.gcf() 
fig.gca().add_artist(circle1) 
plt.show() 

输出如下:

enter image description here

我想在一个Tkinter的画布输出。我如何去做这件事?

我读this问题和给出那里的代码想要我导入matplotlib但我不需要导入它。

+0

参见https://stackoverflow.com/questions/16849483/which-is-the-recommended-way-to-plot-matplotlib- or-pylab/16849816#16849816 – tacaswell

回答

2

作为每matplotlib例子:

http://matplotlib.org/examples/user_interfaces/embedding_in_tk.html

#!/usr/bin/env python 

import matplotlib 
matplotlib.use('TkAgg') 

from numpy import arange, sin, pi 
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg 
# implement the default mpl key bindings 
from matplotlib.backend_bases import key_press_handler 


from matplotlib.figure import Figure 

import sys 
if sys.version_info[0] < 3: 
    import Tkinter as Tk 
else: 
    import tkinter as Tk 

root = Tk.Tk() 
root.wm_title("Embedding in TK") 


f = Figure(figsize=(5,4), dpi=100) 
a = f.add_subplot(111) 
t = arange(0.0,3.0,0.01) 
s = sin(2*pi*t) 

a.plot(t,s) 


# a tk.DrawingArea 
canvas = FigureCanvasTkAgg(f, master=root) 
canvas.show() 
canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1) 

toolbar = NavigationToolbar2TkAgg(canvas, root) 
toolbar.update() 
canvas._tkcanvas.pack(side=Tk.TOP, fill=Tk.BOTH, expand=1) 

def on_key_event(event): 
    print('you pressed %s'%event.key) 
    key_press_handler(event, canvas, toolbar) 

canvas.mpl_connect('key_press_event', on_key_event) 

def _quit(): 
    root.quit()  # stops mainloop 
    root.destroy() # this is necessary on Windows to prevent 
        # Fatal Python Error: PyEval_RestoreThread: NULL tstate 

button = Tk.Button(master=root, text='Quit', command=_quit) 
button.pack(side=Tk.BOTTOM) 

Tk.mainloop() 
+0

这与我在问题中附加的链接类似,这正是我想要绕过的。 –

+0

为什么你不想导入matplotlib?基本上你是通过导入pylab无论如何。它需要所有的帆布钩到不同的工具包 – Naib

+0

我只是进口pyplot,它工作。由于我在Windows上运行它,我猜安装使它更容易......?我不必导入matplotlib来使pyplot工作。 –