2014-03-27 132 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工作。 –