python的tkinter,能画什么图?
今天从下午忙到现在,睡觉。
这个能绘点图的。
import json import tkinter as tk from tkinter import filedialog from tkinter import LabelFrame from tkinter import StringVar from PIL import Image, ImageTk # 方块大小 card_size = 120 # 绘图起点坐标 start_x = 400 start_y = 100 # 7 * 5 方格 x_grid = 7 y_grid = 5 # 打开文件,载入json文件 def open_file(): fname = filedialog.askopenfilename(title='打开文件', filetypes=[('json', '*.json'), ('All Files', '*')]) # 更新Label text变量 var.set(fname) with open(fname, 'r') as load_f: global card_dict card_dict = json.load(load_f) # 绘图 def draw_card(): # 这个打开文件,用的是回调函数,我暂时也不知道如何不用这个全局变量 global card_dict imgs_list = [] for i in range(y_grid): y1 = start_y + i * card_size for j in range(x_grid): x1 = start_x + j * card_size # 解析json里对应的文件名 image_num = card_dict[str(i+1)][str(j+1)] image_path = "images/{}-{}.png".format(image_num[0], image_num[1]) # 载入图片 img = Image.open(image_path) # 重定义大小 img = img.resize((card_size, card_size), Image.BILINEAR) # 重定义旋转 img = img.rotate(image_num[2]) imgs = ImageTk.PhotoImage(img) # 一定要放在列表里,要不然,后面的图会刷掉前面的图 imgs_list.append(imgs) # 每一次都全绘已有图片 for item in imgs_list: # 以nw左上角为基准点 cv.create_image((x1, y1), anchor='nw', image=item) # 不调用update,不会更新画布 win.update() # 停一秒再作下一步动作 win.after(1000) # 不让图消失太快 win.after(10000) win = tk.Tk() win.title('tkinter') w = win.winfo_screenwidth() h = win.winfo_screenheight() win.geometry("%dx%d" % (w, h)) cv = tk.Canvas(win, bg='silver', width=w, height=h) # 要更新label的text,要用var.set方法才行 var = StringVar() var.set("...") lab_fra = LabelFrame(win, height=200, width=300, text='选择文件') lab_fra.pack(side='top', fill='both', expand=True) btn_open = tk.Button(lab_fra, text='打开文件', command=open_file) btn_open.grid(row=0, column=0) btn_render = tk.Button(lab_fra, text='开始渲染', command=draw_card) btn_render.grid(row=0, column=1) text_label = tk.Label(lab_fra, textvariable=var) text_label.grid(row=0, column=2) # 画格子, 要算好横纵坐标 for i in range(y_grid): y1 = start_y + i * card_size for j in range(x_grid): x1 = start_x + j * card_size cv.create_rectangle(x1, y1, x1 + card_size, y1 + card_size) cv.pack() win.mainloop()
json文件格式:
{ "1": { "1": ["0001","a", 0],"2": ["0002", "b", 0],"3": ["0003", "a", 0],"4": ["0004", "a", 0], "5": ["0005", "b",40],"6": ["0006","b",180],"7": ["0006","b",90] }, "2": { "1": ["0001","b", 0],"2": ["0002", "a", 20],"3": ["0003", "a", 0],"4": ["0004", "a", 0], "5": ["0005", "a",20],"6": ["0006","b",0],"7": ["0006","b",90] }, "3": { "1": ["0001","a", 0],"2": ["0002", "a", 0],"3": ["0003", "a", 0],"4": ["0004", "a", 0], "5": ["0005", "a",0],"6": ["0006","a",0],"7": ["0006","b",90] }, "4": { "1": ["0001","b", 0],"2": ["0002", "a", 0],"3": ["0003", "b", 0],"4": ["0004", "a", 0], "5": ["0005", "a",0],"6": ["0006","a",0],"7": ["0006","b",90] }, "5": { "1": ["0001","a", 0],"2": ["0002", "a", 0],"3": ["0003", "a", 0],"4": ["0004", "a", 0], "5": ["0005", "a",0],"6": ["0006","a",0],"7": ["0006","b",90] } }
绘出来的样子:
python的tkinter,能画什么图?的更多相关文章
- python的turtle模块画折线图
代码如下: import turtle yValues = [10.0,7.4,6.4,5.3,4.4,3.7,2.6] def main(): t = turtle.Turtle() t.hidet ...
- python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)
最近在用python中的matplotlib画折线图,遇到了坐标轴 "数字+刻度" 混合显示.标题中文显示.批量处理等诸多问题.通过学习解决了,来记录下.如有错误或不足之处,望请指 ...
- 结合MATLAB、Python、R语言,在求得显著差异的边(节点对)之后,怎么画circle图
先来看看成果图: OK,开始画图: 实验背景声明:在脑影像分析中,我们首先构建脑网络,然 ...
- Python画三维图-----插值平滑数据
一.二维的插值方法: 原始数据(x,y) 先对横坐标x进行扩充数据量,采用linspace.[如下面例子,由7个值扩充到300个] 采用scipy.interpolate中的spline来对纵坐标数据 ...
- Python GUI - tkinter
目录: Tkinter 组件 标准属性 几何管理 代码实例: 1. Label & Button 2. Entry & Text 3.Listbox列表 4.Radiobutton单选 ...
- python之Tkinter控件学习
转载自 http://www.cnblogs.com/kaituorensheng/p/3287652.html#_label0 阅读目录 1. 产品介绍 2. 设计规划 3. 相关知识 4. 源码 ...
- Matplotlib学习---用matplotlib画折线图(line chart)
这里利用Jake Vanderplas所著的<Python数据科学手册>一书中的数据,学习画图. 数据地址:https://raw.githubusercontent.com/jakevd ...
- matplotlib 画动态图以及plt.ion()和plt.ioff()的使用
学习python的道路是漫长的,今天又遇到一个问题,所以想写下来自己的理解方便以后查看. 在使用matplotlib的过程中,常常会需要画很多图,但是好像并不能同时展示许多图.这是因为python可视 ...
- 使用Mysql Workbench 画E-R图
MySQL Workbench 是一款专为MySQL设计的ER/数据库建模工具.你可以用MySQL Workbench设计和创建新的数据库图示,建立数据库文档,以及进行复杂的MySQL 迁移.这里介绍 ...
- 用rose画UML图(用例图,活动图)
用rose画UML图(用例图,活动图) 首先,安装rose2003,电脑从win8升到win10以后,发现win10并不支持rose2003的安装,换了rose2007以后,发现也不可以. 解决途径: ...
随机推荐
- activiti学习5:开启流程和流程前进
目录 activiti学习5:开启流程和流程前进 一.流程和任务的关系 二.开启流程 2.1根据流程定义key开启流程 三.查询用户任务 3.1 TaskQuery 四.完成任务 activiti学习 ...
- [转帖]LINUX PID 1 和 SYSTEMD
LINUX PID 1 和 SYSTEMD 2017年07月16日 陈皓 评论 46 条评论 57,176 人阅读 https://coolshell.cn/articles/17998.html ...
- Jenkins+gitlab+msbuild
配置gitlab 这里会生成一个token在页面上方,一定要复制出来.存在别的地方. jenkins配置gitlab 在jenkins服务器上安装vs,目的是使用它的msbuild,如果项目中还用到了 ...
- kali更新软件源
首先就是修改软件源文件 /etc/apt/sources.list 可以用leafpad打开,在终端中键入: leafpad /etc/apt/sources.list 原码是kali官方的软件源,更 ...
- 怎么删除json 键值对
var obj = { 'id': 1, 'name': 2 } delete obj.id delete obj['id'] console.log(obj) //{ 'name': 2 }
- Locust性能测试_参数关联
前言 前面[Locust性能测试2-先登录场景案例]讲了登录的案例,这种是直接传账号和密码就能登录了,有些登录的网站会复杂一点, 需要先从页面上动态获取参数,作为登录接口的请求参数,如[学信网:htt ...
- angular复习笔记4-模板
Angular复习笔记4-模板 简介 模板是一种自定义的标准化页面,通过模板和模板中的数据结合,可以生成各种各样的网页.在Angular中,模板的默认语言是HTML,几乎所有的HTML语法在模板中都是 ...
- NMS(non maximum suppression,非极大值抑制)
"""nms输入的数据为box的左上角x1,y1与右下角x2,y2+confidence,rows=batch_size,line=[x1,y1,x2,y2,confid ...
- C++字符串相互转换
转自cs_wu原文 C++ char*,const char*,string的相互转换 1. string转const char* string s ="abc"; const c ...
- Docker 基础篇 入门篇
1.Docker入门 1.为什么要用docker? 相比于传统: 部署非常慢 成本非常高 资源浪费 难于迁移和扩展 可能会被限定硬件厂商 由于物理机的诸多问题,后来出现了虚拟机 一个物理机可以部署多个 ...