之前做统计彩票程序,然后想做个窗口程序在窗口里动态的想换哪个统计图表就看哪个,结果半天都做不好,网上各种混乱的代码几乎没一个能用的,最后干脆曲线救国,统计完之后统计视图自动保存成图片,这个比较简单,用savefig就行,然后想看哪张图就读取图片显示到窗口的画布上.

但是动态的在画布上换图很不容易,用了我一天的时间试了无数的代码终于找到了合适的,赶紧贴出来供大家分享.

我的代码写的比较烂,大家凑合看吧.

# -*- coding: utf-8 -*-
"""
Created on Mon May 13 22:27:47 2019
引入工具栏按钮
能换图了
把四种统计图都做了上来
@author: Administrator
"""
from PIL import Image, ImageTk
import matplotlib.pyplot as plt
from tkinter import *
import tkinter as tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg,NavigationToolbar2Tk #NavigationToolbar2TkAgg
import matplotlib
matplotlib.use('Agg')
from matplotlib.pyplot import plot,savefig
from PIL import Image, ImageTk
from tkinter import ttkplt.rcParams['font.family'] = 'SimHei' ## 设置字体root = tk.Tk() # 初始化Tk()
root.title("排列3彩票统计程序")    # 设置窗口标题
root.geometry("1920x1010+0+0")    # 设置窗口大小 注意:是x 不是*
root.resizable(width=True, height=True) # 设置窗口是否可以变化长/宽,False不可变,True可变,默认为True
root['background']='white'def tp(event):canvas.create_image(-50,0,anchor=NW,image=img_png)
def tp2(event):canvas.create_image(-50,0,anchor=NW,image=img_png2)
def tp3(event):canvas.create_image(-50,0,anchor=NW,image=img_png3)
def tp4(event):canvas.create_image(-50,0,anchor=NW,image=img_png4)# 生成工具条
toolframe = tk.Frame(root, height=20, bg='#F7EED6')#, relief=tk.RAISED)
frame = tk.Frame(toolframe, bg='#F7EED6')
canvas = tk.Canvas(root,bg='white')
canvas.pack(fill=tk.BOTH, expand=1)
bt=ttk.Button(frame, width=20,text='0到9出现次数')
bt.bind("<Button-1>",tp)
bt.grid(row=0, column=0, padx=1, pady=1, sticky=tk.E)
img_open = Image.open('0到9出现次数.jpg')
img_png = ImageTk.PhotoImage(img_open)
btk=ttk.Button(frame, width=20,text='K线图')
btk.bind("<Button-1>",tp2)
btk.grid(row=0, column=1, padx=1, pady=1, sticky=tk.E)
img_open2 = Image.open('k线图.jpg')
img_png2 = ImageTk.PhotoImage(img_open2)
btdx=ttk.Button(frame, width=20,text='大小统计')
btdx.bind("<Button-1>",tp3)
btdx.grid(row=0, column=2, padx=1, pady=1, sticky=tk.E)
img_open3 = Image.open('大小走势图.jpg')
img_png3 = ImageTk.PhotoImage(img_open3)
btjo=ttk.Button(frame, width=20,text='奇偶统计')
btjo.bind("<Button-1>",tp4)
btjo.grid(row=0, column=3, padx=1, pady=1, sticky=tk.E)
img_open4 = Image.open('奇偶走势图.jpg')
img_png4 = ImageTk.PhotoImage(img_open4)
frame.pack(side=tk.LEFT)
toolframe.pack(fill=tk.X)root.mainloop() # 进入消息循环

建立窗口,窗口上有一个画布和几个按钮控件,想看哪张图就点哪个按钮,可以动态给画布换图,感觉精髓就是自定义函数加了个event参数,按钮控件里不要用command命令,读取图片要放在函数外操作,函数里边只放一条create_image命令



python动态换图tkinter库的Canvas画布组件相关推荐

  1. Python实战之tkinter库画图,用canver画布教你画会动的哆啦A梦

    目录 tkinter库画图基本思路 画虚线 定义画原始人物的函数 点击眨眼 运动四肢 色彩变化 我们知道Python之所以强大,很大一方面都是因为它具有很多强大的第三方库. 而且Python很突出的一 ...

  2. 【Unity3D-UGUI系列】(一)Canvas 画布组件详解

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875   大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉 ...

  3. 鸿蒙应用开发之canvas画布组件介绍

    canvas画布组件用于自定义绘制图形. 方法:getContext和toDataURL getContext:getContext('2d')函数用于获取2D绘图引擎,调用方法为var ctx = ...

  4. python动态交互式图表库_五个创建交互式图表的Python库

    数据可视化专家Andy Kirk说过,数据可视化分为两类:探索性可视化图表和解释性可视化图表.解释性可视化图表的目标是进行描述--它们是根据对事物表面的关键线索而被仔细构造出来的. 另一方面,探索性可 ...

  5. Python tkinter库之Canvas 直线等分圆弧(割圆术)

    直线等分圆周,分隔得越多越接近于圆: import tkinter as tk import pyautogui as ag import random from time import sleep ...

  6. python动态交互式图表库_干货 | 使用pyecharts绘制交互式动态地图

    干货 | 使用pyecharts绘制交互式动态地图 说到pyecharts,相信很多人不会陌生,一个优秀的python可视化包. pyecharts是中国人开发的,相比较matplotlib.seab ...

  7. 解决windows版本python下没有tkinter库问题

    假设您在Windows上并且还安装了常规Python发行版(相同版本的嵌入式发行版),要在嵌入式发行版中安装Tkinter,您可以从常规Python发行版中复制以下文件: tcl folder to  ...

  8. 海龟编程 python绘图工具turtle库的用法 turtle库使用方法大全,画笔设置 画布设置 绘图设置,画笔粗细,画笔颜色, 画笔速度。Python二级必须会的命令(已获取证书)

    目录 海龟编程 python绘图工具turtle库的用法 画布: 画笔 画笔运动命令: 画笔的控制命令: 全局控制命令: 简单turtle绘图示例: 圆中方: 三色同心圆: 四个圆中方: 螺旋正方: ...

  9. Py之tkinter:tkinter库的简介、安装、使用方法之详细攻略

    Py之tkinter:tkinter库的简介.安装.使用方法之详细攻略 目录 tkinter库的简介 tkinter库的安装 tkinter库的使用方法 1.tkinter的控件简介 1.1.tkin ...

最新文章

  1. 深入理解ROS技术 【1】ROS下的模块详解(1-65)
  2. 重启大法好!线上常见问题排查手册
  3. CCNA training notes
  4. 来一场蛋白和小分子的风花雪月
  5. UI设计干货素材|如何正确使用直观打折数字使画面更饱满更具促销感!
  6. 字节Java全能手册火了!Redis/Nginx/Dubbo/Spring全家桶/啥都有
  7. 数据浪潮之间的前端工程师
  8. a form 出口享惠情况_进出口报关
  9. Linux高可用集群方案之heartbeat基础原理及逻辑架构
  10. python cpk计算器_CPK公式
  11. 【UNIX网络编程】|【07】SCTP协议探究
  12. 当我在荒废时间的时候会有多少人在拼命
  13. 解决Unable to find a single main class from the following candidates
  14. ObjectARX反应器概述
  15. WINDY数----数位dp
  16. stack around xxx is corrupted
  17. DeepFM理论与实践
  18. 人生无根蒂,飘如陌上尘.
  19. 凯立德2018android零售版,凯立德2018冬季版C-CAR车机零售版懒人包C1204-C7P08-3J21J24
  20. 你的电脑卡吗?90%的人靠这5招给电脑提速!

热门文章

  1. 北京污染有救了 IBM用物联网找雾霾病因
  2. 企业级项目分享:购物车模块( 二) 21-06-09
  3. 六边形热图:专治数据密集重叠无法查看!
  4. 转载:configure执行流程(1.5.2)《深入理解Nginx》(陶辉)
  5. 格雷希尔GripSeal能为设备集成商做什么?
  6. 红帽张先民博士:开源驱动企业数字化转型
  7. 基于Thinkphp的开源管理系统
  8. 传统监控摄像机与工业智能相机的区别
  9. Python中读取txt文件的三种可行办法
  10. SQL Server中的top(最前面的若干记录)