zoukankan      html  css  js  c++  java
  • 在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: 

    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.

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

  • 相关阅读:
    Linux C编程之十二 信号
    折腾vue--vue自定义组件(三)
    折腾vue--使用vscode创建vue项目(二)
    折腾vue--环境搭建(一)
    .net生成PDF文件的几种方式
    星星评分-依赖jquery
    组织机构树
    Newtonsoft--自定义格式化日期
    .net mvc 自定义错误页面
    js模拟form提交 导出数据
  • 原文地址:https://www.cnblogs.com/fallenmoon/p/8385007.html
Copyright © 2011-2022 走看看