前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >matplotlib 与 tkinter 集成小案例 (上篇)

matplotlib 与 tkinter 集成小案例 (上篇)

作者头像
double
发布2020-11-03 10:25:50
2K0
发布2020-11-03 10:25:50
举报
文章被收录于专栏:算法channel

matplotlib 是绘图界最通用的库,功能强大,与其他系统集成友好,比如Python内置的绘图模块tkinter,这篇文章的主要目标:实现一个使用tkinter集成matplotlib交互绘图案例

tkinter模块设计精简,满足一些小型GUI设计,首先创建一个窗体对象,添加基本组件,如Label,Button,Radiobutton等,再pack或grid组件到父容器中。

此案例,创建tkinter窗口及组件的代码,如下:

代码语言:javascript
复制
window = tk.Tk()

# 第2步,给窗口的可视化起名字
window.title('My Window')

# 第3步,设定窗口的大小(长 * 宽)
# 这里的乘是小x
window.geometry('1200x600')

# 第4步,在图形界面上创建一个标签label用以显示并放置
# 定义一个var用来将radiobutton的值和Label的值联系在一起.
var = tk.StringVar()
l = tk.Label(window, bg='yellow', width=30, height=3,
             text='matplotlib in tkinter', font=('Arial', 21))

l.pack()

上面创建一个基本窗体,在上面创建Radiobutton组件,其父窗体是window对象。

然后创建一个frame对象,在里面,再填充2个frame对象,一个位于左侧,另一个位于右侧:

代码语言:javascript
复制
# 第二层frame,左frame,长在主frame上
frame_l = tk.Frame(frame)
# 第二层frame,右frame,长在主frame上
frame_r = tk.Frame(frame)
frame_l.pack(side='left')
frame_r.pack(side='right')

然后,在左侧frame中创建柱状图,右侧frame中创建饼状图。

下面就是最重要的tkinter和matplotlib集成部分,matplotlib提供FigureCanvasTkAgg对象,只需三行代码,实现图形绘制在tkinter的Canvas中:

代码语言:javascript
复制
canvas_l = FigureCanvasTkAgg(figure_l, frame_l)
# 用draw代替
canvas_l.draw()
canvas_l.get_tk_widget().pack()

第一行代码实现figure对象(matplotlib对象)与frame对象(tkinter组件)关系的建立,第二行使用集成后的对象中的draw方法绘图,最后拿到tkinter组件并组装到tkinter中。

最终实现的展示效果如下:

交互部分,选中Radiobutton中bar选项后,仅显示柱状图:

选中pie选项时,仅显示饼状图:

当选中both选项后,恢复全部显示。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档