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以后,发现也不可以. 解决途径: ...
随机推荐
- LODOP打印URL显示和隐藏进度条
不建议使用ADD_PRINT_URL:由于Lodop借用IE下载引擎,与非IE浏览器之间目前不能传递Session(Cookies),所以需要安全验证的页面不要用URL方式打印,要用页面已经下载好的内 ...
- java 堆调优
一.查看kafka集群的broker的堆内存使用情况 1>.使用jstat查看gc的信息([root@kafka116 ~]# jstat -gc 12698 1s 30) 参数说明:S0C:第 ...
- 【ARM-Linux开发】【CUDA开发】NVIDIA TEGRA X1:LINUX驱动程序包多媒体用户指南
NVIDIA TEGRA X1:LINUX驱动程序包多媒体用户指南 转载请注明作者和出处:http://blog.csdn.net/u011475210 嵌入式平台:NVIDIA Jetson TX1 ...
- 【linux】查看端口占用情况
netstat -nlp | grep "端口号"
- jdk7中hashmap实现原理和jdk8中hashmap的改进方法总结
1. HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端. 数组 数组存储区间是连续的,占用内存严重,故空间复杂的很大.但数组的二分查找时间复杂度小,为O(1 ...
- Python如何获取系统大小端模式
1. 第一种方法导入sys模块: >>> import sys >>> >>> sys.byteorder 'little' >>&g ...
- Aspx后台遍历控件
aspx设计页面 //这个是检测按钮,检测下面的checkbox是否被选中.选中时打印其值 //https://www.cnblogs.com/pwblog/articles/3456385.html ...
- Android 系统架构 和 各个版本代号介绍
一.Android 系统架构: 1. linux内核层Android 基于Linux内核,为Android设备的各种硬件提供底层驱动 比如: 显示驱动.音频.照相机.蓝牙.Wi-Fi驱动,电源管理等 ...
- Hive学习笔记(二)—— 安装配置
Hive安装配置及基本操作 1. Hive安装及配置 (1). 上传文件到Hadoop102节点,解压到/opt/moudle (2). 修改/opt/module/hive/conf目录下的hive ...
- 入门篇-contrail-command(对接openstack)All-In-One
基础环境 系统: centos7.6(3.10.0-957) 64G内存 500G磁盘 关闭防火墙 systemctl disable firewalld 关闭selinux sed -i 's/SE ...