python tkinter 源码_matplotlib 与 tkinter 集成小案例 (上篇)

Python与算法社区 已原创421篇 给个 星标 是最大支持 matplotlib 是绘图界最通用的库,功能强大,与其他系统集成友好,比如Python内置的绘图模块tkinter,这篇文章的主要目标: 实现一个使用tkinter集成matplotlib交互绘图案例 。

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

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

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对象,一个位于左侧,另一个位于右侧:
# 第二层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中:
canvas_l = FigureCanvasTkAgg(figure_l, frame_l)
# 用draw代替
canvas_l.draw()
canvas_l.get_tk_widget().pack()

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

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

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

19d3f2a57b93be59c51db175c69a1145.png

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

ab425e428ce1ec3bcaaf5a34217a27cc.png 当选中both选项后,恢复全部显示。 明天文章,我会详细得介绍此案例的开发细节,包括开发过程的坑点,欢迎到时关注。 如果你想获取本文的全部源码,关注下面公众号,回复 1

b8fbf175274d4288ee00b14d9d60dda0.png

给我点个赞 下次分享更有劲
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值