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 # 间隙大小 gap_size = 2 # 绘图起点坐标 start_x = 400 start_y = 100 # 7 * 5 方格 x_grid = 7 y_grid = 5 # 打开文件,载入json文件 def open_file(): xxx_name = filedialog.askopenfilename(title='打开文件', filetypes=[('json', '*.json'), ('All Files', '*')]) # 更新Label text变量 var.set(wzj_name) with open(xxx_name, '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].upper()) # 载入图片 img = Image.open(image_path) # 重定义大小 img = img.resize((card_size-gap_size, card_size-gap_size), Image.BILINEAR) # 重定义旋转 img = img.rotate(image_num[1]) imgs = ImageTk.PhotoImage(img) # 一定要放在列表里,要不然,后面的图会刷掉前面的图 imgs_list.append(imgs) # 每一次都全绘已有图片 for item in imgs_list: # 以nw左上角为基准点 cv.create_image((x1+gap_size, y1+gap_size), anchor='nw', image=item) # 不调用update,不会更新画布 win.update() # 停一秒再作下一步动作 win.after(500) # 不让图消失太快 win.after(100000) 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()
读取文件的样式
{ "1": { "1": ["39A", 90],"2": ["24A", 0],"3": ["2A", 0],"4": ["55a", 180], "5": ["2a",0],"6": ["14a",0],"7": ["39a",0] }, "2": { "1": ["9A", 90],"2": ["73A", 0],"3": ["74A", 0],"4": ["8B", 90], "5": ["68a",0],"6": ["69a",0],"7": ["22a",90] }, "3": { "1": ["51A", 90],"2": ["38A", 270],"3": ["36A", 90],"4": ["60B", 0], "5": ["31a",0],"6": ["18b",270],"7": ["6a",90] }, "4": { "1": ["14A", 90],"2": ["81A", 0],"3": ["82A", 0],"4": ["10B", 90], "5": ["83a",0],"6": ["67a",0],"7": ["12a",90] }, "5": { "1": ["39A", 180],"2": ["34A", 0],"3": ["24A", 0],"4": ["64a", 180], "5": ["34b",0],"6": ["8a",0],"7": ["39a",270] } }
{ "1": { "1": ["39A", 90],"2": ["18A", 270],"3": ["39a", 90],"4": ["38a", 270], "5": ["53b",0],"6": ["39b",0],"7": ["18b",0] }, "2": { "1": ["64a", 90],"2": ["20b", 0],"3": ["55A", 90],"4": ["18a", 0], "5": ["31a",90],"6": ["39b",180],"7": ["39b",270] }, "3": { "1": ["9A", 90],"2": ["18A", 0],"3": ["9A", 90],"4": ["9a", 90], "5": ["9b",90],"6": ["39b",90],"7": ["39b",0] }, "4": { "1": ["4A", 90],"2": ["6A", 90],"3": ["9A", 90],"4": ["4A", 90], "5": ["39b",180],"6": ["39b",270],"7": ["13b",90] }, "5": { "1": ["39a", 180],"2": ["53A", 180],"3": ["51A", 180],"4": ["53a", 180], "5": ["8a",0],"6": ["38b",270],"7": ["39b",270] } }
tkinter代码正式版的更多相关文章
- Zend Studio 12.0.2正式版发布和破解方法,zend studio 12.0.1汉化,相式设置为Dreamweaver,空格缩进为4个, 代码默认不折叠的设置,Outline中使用的图形标志,代码颜色之eot设置。
背景:zend studio 12.0.2 修复了一个12.0.1的: Fixed problem with referenced variables marked as undefined,我都说 ...
- MyEclipse 2016正式版更新内容
MyEclipse 2016 Stable 1.0正式发布!在保留之前CI系列的工具之外,又新增了许多非常棒的新功能.正式版下载地址 Eclipse Mars MyEclipse 2016基于Ecli ...
- Win10 PC一周年更新正式版14393.447 32位/64位更新补丁KB3200970下载 Flash补丁Kb3202790下载
微软在今天凌晨推送了Win10 PC一周年更新正式版14393.447,本次更新补丁代号为KB3200970,面向Win10一周年更新正式版的PC用户. 更新日志 • 提升了多媒体音频.远程桌面以及I ...
- 【Android】Vitamio 4.0 正式版发布/ Vitamio IOS 测试版发布(2013-07-16)
一.链接 Vitamio官网:http://www.vitamio.org/ 官网github地址:https://github.com/yixia 自己无法编译通过的这里下载: Vitamio 4. ...
- 初次体验VS2015正式版,安装详细过程。
本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 阅读目录 介绍 安装 其他 本文版权归mephi ...
- 【6年开源路】海王星给你好看!FineUI v4.0正式版暨《FineUI3to4一键升级工具》发布!
去年10-28号,我发布了一篇文章<海王星给你好看!FineUI v4.0公测版发布暨<你找BUG我送书>活动开始>,标志着FineUI开始向4.0版本迈进.经过4个月3个公测 ...
- Xcode 6 正式版如何创建一个Empty Application
Xcode 6 正式版里面没有Empty Application这个模板,这对于习惯了纯代码编写UI界面的程序员来说很不习惯. 有网友给出了一个解决方法是,把Xcode 6 beta版里面的模板复制过 ...
- [C#HttpHelper]类1.4正式版教程与升级报告
[C#HttpHelper]类1.4正式版教程与升级报告 导读 1.升级报告 2.HttpHelper1.4正式版下载 3.HttpHelper类使用方法, 4.最简单的Post与Get的写法 ...
- Appium路线图及1.0正式版发布
Appium更新的速度极快,从我试用时候的0.12到1.0(0.18版本后就是1.0),完全符合移动互联网的节奏. 更新可能会慢,可以多试几次 整理了testerhome上思寒发表的帖子,让我们来看下 ...
随机推荐
- 使用垃圾桶机制防止rm -rf误删文件
偶然看到一个比较好用的工具Trash-Cli.一个类似垃圾桶的机制,可以恢复文件.试了一下,感觉还行 (1)下载安装: https://github.com/andreafrancia/trash-c ...
- Prometheus监控教程——从入门到放弃
Prometheus的安装还是比较简单的 下载地址如下 https://prometheus.io/download/ 解压,修改配置,运行.默认监听9090端口 [root@localhost ~] ...
- es查询和更新 语句示例
文档目录: https://www.elastic.co/guide/index.html GET _search { "query": { "match_all&quo ...
- 如何录制高清GIF格式的图片
如何录制高清GIF格式的图片 工具:傲软GIF 下载地址:https://www.apowersoft.cn/gif 特点:质量高,能够一帧一帧的修改 使用简单.就不说了.自行尝试.这里只是提供一个制 ...
- 在使用Hanlp配置自定义词典时遇到的问题
要使用hanlp加载自定义词典可以通过修改配置文件hanlp.properties来实现.要注意的点是: 1. root根路径的配置: hanlp.properties中配置如下: #本配置文件中的路 ...
- perl修改镜像源地址
perl修改源地址 这里推荐中科大的源 http://mirrors.ustc.edu.cn/CPAN/ perl -MCPAN -e shell 1.执行cpan命令确认存在该命令 如果cpan执行 ...
- 嵌入式02 STM32 实验11 NVIC和中断总结
一.基础知识 1.cortex-m3支持256个中断,其中包含了16个内核中断,240个外部中断 2.STM32只有84个中断,包括16个内核中断和68个可屏蔽中断 3.STM32F103上只有60个 ...
- pytest_01-环境准备与入门
前言 首先说下为什么要学pytest,在此之前相信大家已经掌握了python里面的unittest单元测试框架,那再学一个框架肯定是需要学习时间成本的. 刚开始我的内心是拒绝的,我想我用unittes ...
- python_封装redis_hash方法
xshell 进入 虚拟环境 安装 redis workon py3env # 进入虚拟环境 pip install redis # 安装redis deactivate # 退出虚拟环境 简单的封装 ...
- 应用中有多个Spring Property PlaceHolder导致@Value只能获取到默认值
背景 工作中负责的一套计费系统需要开发一个新通知功能,在扣费等事件触发后发送MQ,然后消费MQ发送邮件或短信通知给客户.因为有多套环境,测试时需要知道是从哪套环境发出的邮件,又不想维护多套通知模板,因 ...