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上思寒发表的帖子,让我们来看下 ...
随机推荐
- node.js执行shell命令进行服务器重启
nodejs功能强大且多样,不只是可以实现 服务器端 与 客户端 的实时通讯,另一个功能是用来执行shell命令 1.首先,引入子进程模块var process = require('child_pr ...
- WinSCP-windows与Linux之间文件传输
WinSCP是一款Windows下通过使用SSH协议的开源工具,用于连接Linux操作系统,可以上传或者下载文件使用! 开源顾名思义,无需注册,安装即可使用!(安装请自行百度WinSCP) 打开桌面上 ...
- [UE4] TSharedPtr, TWeakObjectPtr and TUniquePtr
转自:https://dawnarc.com/2018/07/ue4-tsharedptr-tweakobjectptr-and-tuniqueptr/ UE4 的 TSharedPtr.TWeakO ...
- JavaEE 期末总结
struts2部分 一.struts2框架的集成: 1.web.xml配置struts2过滤器:前端控制器.核心控制器 如果有多个过滤器,需要将该过滤器放置到最后一个 2.struts.xml配置:主 ...
- git pull时的冲突解决方式; git stash; git fetch
git fetch指令: https://www.yiibai.com/git/git_pull.html 发现远端有更新,git pull时,如果你本地分支修改了东西,导致git pull有冲突,失 ...
- [转帖]期待下一个十年|CIS 2019温馨回顾(附PPT下载)
期待下一个十年|CIS 2019温馨回顾(附PPT下载) https://www.freebuf.com/fevents/222236.html shidongqi2019-12-06共26587人围 ...
- redis底层实现的几种数据结构
redis底层数据结构 一.简单动态字符串(SDS) 定义: struct sdshdr{ int len; //SDS所保存的字符串长度 int free //记录buf数组中为使用的字节数量 ...
- Linux目录结构(目录结构详解是重点)
1.Linux目录与Windows目录对比 1.Windows目录结构 2.Linux目录结构 深刻理解Linux 树状文件目录是非常重要的,只有记住他们,你才能在命令行中任意切换,想去哪里去哪里 2 ...
- 74HC573锁存器应用(附英文手册)
锁存器(LATCH)概念 锁存器(Latch)是一种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用下改变状态. 锁存,就是把信号暂存以维持某种电平状态. 锁存器作用: 缓存 完成高速的控 ...
- mpx小程序框架
在构建自己mpx小程序demo的时候遇到的问题 1.关于自定义tabbar的问题 1.1 在根据微信小程序的自定义tabbar来做 ▲在与src同级目录创建 custom-tab-bar 文件夹 创建 ...