tkinter的GUI设计:界面与逻辑分离(四)-- 与 matplotlib 结合

简介: 有些场合,我们需要对数据可视化。单是靠 tkinter 难度太大,而且做出来的效果不一定理想。 此时,将 tkinter 与 matplotlib 结合,是最好的选择。 知识点: 将 tkinter 与 matplotlib 结合的整个套路是固定的,只需要关心我们的绘图逻辑和程序逻辑即可     import matplotlib matplotlib.

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

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

知识点:

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

 

 

import matplotlib
matplotlib.use('TkAgg')

import numpy as np
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure

import tkinter as tk

class 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()

 

目录
相关文章
|
5月前
|
数据采集 供应链 监控
如何开发WMS系统中的经营看板(附架构图+流程图+代码参考)
WMS系统中的经营看板是企业管理仓库运营的重要工具,能够实时展示库存、销售、采购等关键数据。它不仅提高运营效率、降低成本,还助力精准决策。本文详解其功能模块、业务流程、开发技巧及实现效果,并提供代码示例与技术选型建议,帮助企业构建高效的数据可视化系统。
|
11月前
|
人工智能 算法 前端开发
OmAgent:轻松构建在终端设备上运行的 AI 应用,赋能手机、穿戴设备、摄像头等多种设备
OmAgent 是 Om AI 与浙江大学联合开源的多模态语言代理框架,支持多设备连接、高效模型集成,助力开发者快速构建复杂的多模态代理应用。
824 72
OmAgent:轻松构建在终端设备上运行的 AI 应用,赋能手机、穿戴设备、摄像头等多种设备
|
6月前
|
前端开发 Java 数据库
2025 年 Java 学习完整步骤及详细路线指南
本教程涵盖Java从基础到高级的完整学习路径,包括环境配置、语法基础、面向对象编程、集合框架、多线程、网络编程、数据库操作、Spring Boot、微服务架构及项目实战。通过系统学习与实操,助你全面掌握Java核心技术与企业级应用开发。
992 0
|
10月前
|
小程序
【01】微信支付商户申请下户到配置完整流程-微信商户申请-资料准备以及提交-微信商户密钥申请-申请+配置完整流程-优雅草卓伊凡
【01】微信支付商户申请下户到配置完整流程-微信商户申请-资料准备以及提交-微信商户密钥申请-申请+配置完整流程-优雅草卓伊凡
289 2
【01】微信支付商户申请下户到配置完整流程-微信商户申请-资料准备以及提交-微信商户密钥申请-申请+配置完整流程-优雅草卓伊凡
|
存储 数据可视化
如何高效构建团队知识库?试试看板工具
团队知识管理是提升工作效率的关键。知识管理专家Tiago Forte提出的“第二大脑”概念,强调通过收集、整理、提炼和表达四步法,将零散信息转化为系统知识。教你如何用看板工具构建团队知识库。
304 0
如何高效构建团队知识库?试试看板工具
|
9月前
|
运维 安全 开发工具
GitHub 热门开源运维工具 Websoft9:如何实现服务器管理效率翻倍?
Websoft9 提供 200+ 开源应用一键部署,支持容器化隔离、GitOps 自动化和企业级安全防护,助力服务器管理效率提升 80%。
291 1
WK
|
测试技术 开发者 Python
python模块化设计
Python的模块化设计支持开发者将代码拆分成独立模块,提升代码的可读性、可维护性和复用性。通过`.py`文件定义模块,并利用`import`语句导入所需功能,同时可通过包含`__init__.py`的目录创建包以组织多个模块。Python按特定顺序搜索模块,支持修改`sys.path`添加自定义路径。此外,支持相对与绝对导入方式,便于灵活使用模块资源。遵循良好的编程习惯有助于开发高质量的可复用模块,而虚拟环境与依赖管理工具则确保项目间的依赖隔离,进一步增强项目的稳定性和可扩展性。
WK
255 2
|
Oracle Java 关系型数据库
Mac电脑上安装和配置Flutter开发环境
Mac电脑上安装和配置Flutter开发环境
540 60
|
负载均衡 安全 应用服务中间件
微服务架构中的API网关模式与实践
在微服务架构中,API网关扮演着至关重要的角色。它不仅是客户端请求和服务之间的中介,而且负责请求的路由、聚合以及协议转换等关键功能。本文将深入探讨API网关的设计原则、实现方式及其在现代后端系统中的应用,同时提供具体案例分析以展示其在实际项目中的有效运用。
|
机器学习/深度学习 算法 vr&ar
深度学习之可微渲染
可微渲染(Differentiable Rendering)是深度学习领域的一个重要概念,它将传统的计算机图形学与深度学习结合起来,通过使渲染过程可微分(differentiable),以便于在深度学习模型的训练中使用反向传播算法。可微渲染在计算机视觉、图形学和机器人学等领域有着广泛的应用。
618 3