在tkinter中使用matplotlib

import sys
import tkinter as Tk
import matplotlib
from numpy import arange, sin, pi
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.backend_bases import key_press_handler
from matplotlib.figure import Figure

matplotlib.use('TkAgg')
root = Tk.Tk()
root.title("matplotlib in TK")
# 設置圖形尺寸與質量
f = Figure(figsize=(5, 4), dpi=100)
a = f.add_subplot(111)
t = arange(0.0, 3, 0.01)
s = sin(2 * pi * t)
# 繪製圖形
a.plot(t, s)
# 把繪製的圖形顯示到tkinter窗口上
canvas = FigureCanvasTkAgg(f, master=root)
canvas.show()
canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)
# 把matplotlib繪製圖形的導航工具欄顯示到tkinter窗口上
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()
    root.destroy()
    button = Tk.Button(master=root, text='Quit', command=_quit)
    button.pack(side=Tk.BOTTOM)


Tk.mainloop()

 

編譯顯示UserWarning: canvas

This call to matplotlib.use() has no effect because the backend has alreadybeen chosen; matplotlib.use() must be called *before* pylab, matplotlib.pyplot, or matplotlib.backends is imported for the first time.ide

stackoverflow上的解釋是把 matplotlib.use('Agg') 放到 import matplotlib 的下一行,可行。函數

相關文章
相關標籤/搜索