博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tkinter的GUI设计:界面与逻辑分离(四)-- 与 matplotlib 结合
阅读量:5928 次
发布时间:2019-06-19

本文共 1954 字,大约阅读时间需要 6 分钟。

有些场合,我们需要对数据可视化。单是靠 tkinter 难度太大,而且做出来的效果不一定理想。

此时,将 tkinter 与 matplotlib 结合,是最好的选择。

知识点:

将 tkinter 与 matplotlib 结合的整个套路是固定的,只需要关心我们的绘图逻辑程序逻辑即可

 

 

import matplotlibmatplotlib.use('TkAgg')import numpy as npfrom matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAggfrom matplotlib.figure import Figureimport tkinter as tkclass Application(tk.Tk):    '''    文件夹选择程序        界面与逻辑分离    '''    def __init__(self):        '''初始化'''        super().__init__() # 有点相当于tk.Tk()        self.wm_title("Embed matplotlib in tkinter")                self.createWidgets()    def createWidgets(self):        '''界面'''        fig = Figure(figsize=(5,4), dpi=100)        self.ax = fig.add_subplot(111)        self.canvas = FigureCanvasTkAgg(fig, master=self)        self.canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)        self.canvas._tkcanvas.pack(side=tk.TOP, fill=tk.BOTH, expand=1)        toolbar = NavigationToolbar2TkAgg(self.canvas, self)        toolbar.update()        footframe = tk.Frame(master=self).pack(side=tk.BOTTOM) tk.Button(master=footframe, text='重画', command=self.draw).pack(side=tk.BOTTOM)        tk.Button(master=footframe, text='退出', command=self._quit).pack(side=tk.BOTTOM)                self.draw() # 绘图            def draw(self):        '''绘图逻辑'''        x = np.random.randint(0,50,size=100)        y = np.random.randint(0,50,size=100)                #self.fig.clf()                  # 方式一:①清除整个Figure区域        #self.ax = self.fig.add_subplot(111)    # ②重新分配Axes区域        self.ax.clear()                  # 方式二:①清除原来的Axes区域         self.ax.scatter(x, y, s=3)  # 重新画                self.canvas.show()            def _quit(self):        '''退出'''        self.quit()     # 停止 mainloop        self.destroy()  # 销毁所有部件        if __name__ == '__main__':    # 实例化Application    app = Application()        # 主消息循环:    app.mainloop()

 

本文转自罗兵博客园博客,原文链接:http://www.cnblogs.com/hhh5460/p/5172134.html
,如需转载请自行联系原作者
你可能感兴趣的文章
度量时间差
查看>>
MySQL 5.6为什么关闭元数据统计信息自动更新&统计信息收集源代码探索
查看>>
apache prefork模式优化错误
查看>>
jmeter高级用法例子,如何扩展自定义函数
查看>>
lvs
查看>>
通过jsp请求Servlet来操作HBASE
查看>>
JS页面刷新保持数据不丢失
查看>>
清橙A1202&Bzoj2201:彩色圆环
查看>>
使用data pump工具的准备
查看>>
springMVC---级联属性
查看>>
get和post区别
查看>>
crontab执行shell脚本日志中出现乱码
查看>>
Floodlight 在 ChannelPipeline 图
查看>>
leetcode-Word Ladder II
查看>>
VS2017调试闪退之Chrome
查看>>
做移动互联网App,你的测试用例足够吗?
查看>>
cmd.exe启动参数说明
查看>>
私活利器,docker快速部署node.js应用
查看>>
《随笔记录》20170310
查看>>
网站分析系统
查看>>