1 整体框架

import tkinter as tkwindow = tk.Tk()
#创建窗口window.title('my window')
#窗口标题window.geometry('500x200')
#窗口大小

2 参数设定

UNIT = 40
# pixels (之后画图中内容用,表示一个小格子占几个像素)MAZE_H = 4
# grid height(之后画图中内容用,表示纵向有几个小格子)MAZE_W = 4
# grid width(之后画图中内容用,表示横向有几个小格子)

3 创建画布

canvas = tk.Canvas(bg='white',height=MAZE_H * UNIT, width=MAZE_W * UNIT)

4 画直线

for c in range(0, MAZE_W * UNIT, UNIT):x0, y0, x1, y1 = c, 0, c, MAZE_H * UNITcanvas.create_line(x0, y0, x1, y1)
#横线 (起点xy 终点xy)for r in range(0, MAZE_H * UNIT, UNIT):x0, y0, x1, y1 = 0, r, MAZE_W * UNIT, rcanvas.create_line(x0, y0, x1, y1)
#竖线(起点xy,终点xy)

每一个creat_line都表示画一条从(x0,y0)到(x1,y1)的直线

比如第一个,画的是[(0,0)->(0,160) ; (40,0)->(40,160) ; (80,0)->(80,160) ; (120,0)->(120,160),也就是所有的水平线

第二个,画的是[(0,0)->(160,0) ; (0,40)->(160,40) ; (0,80)->(160,80) ; (0,120)->(160,120),也就是所有的竖直线

5 画长方形

hell1_center = origin + np.array([UNIT * 2, UNIT])
hell1 = canvas.create_rectangle(hell1_center[0] - 15, hell1_center[1] - 15,hell1_center[0] + 15, hell1_center[1] + 15,fill='black')hell2_center = origin + np.array([UNIT, UNIT * 2])
hell2 =canvas.create_rectangle(hell2_center[0] - 15, hell2_center[1] - 15,hell2_center[0] + 15, hell2_center[1] + 15,fill='black')rect = canvas.create_rectangle(origin[0] - 15, origin[1] - 15,origin[0] + 15, origin[1] + 15,fill='red')

其中,create_rectangle 中的参数是左上角和右下角两个点的坐标

【或者这么理解,和画椭圆是一样的参数分别是椭圆 左极值点、上极值点、右极值点、下极值点(顺时针转一圈)】

6 画椭圆型

oval_center = origin + UNIT * 2
oval = canvas.create_oval(oval_center[0] - 15, oval_center[1] - 15,oval_center[0] + 15, oval_center[1] + 15,fill='yellow')

参数分别是椭圆 左极值点、上极值点、右极值点、下极值点(顺时针转一圈)

7 激活窗口

和之前的一样

canvas.pack()window.mainloop()

8 其他

  • 在mainloop之前,如果想删掉某个图形,可以直接canvas.delete(XXX)
  • canvas.coords(长方形/椭圆),会得到 【左极值点、上极值点、右极值点、下极值点】这四个点组成的元组
  • canvas.move(rect,15,15)——向左右  & 上下 移动 (右&下是加,左&上是减)

注:这个教程是辅助Q-learning 算法更新 - 强化学习 (Reinforcement Learning) | 莫烦Python (mofanpy.com)

中没有涉及的Maze 类

参考内容:Reinforcement-learning-with-tensorflow/maze_env.py at master · MorvanZhou/Reinforcement-learning-with-tensorflow (github.com)

tkinter笔记:画布canvas相关推荐

  1. 刮刮乐html5效果擦除,利用HTML5的画布Canvas实现刮刮卡效果

    先给大家展示效果: 你玩过刮刮卡么?一不小心可以中奖的那种.今天我给大家分享一个基于HTML5技术实现的刮刮卡效果,在PC上只需按住鼠标,在手机上你只需按住指头,轻轻刮去图层就可以模拟真实的刮奖效果. ...

  2. HTML5画布(CANVAS)速查简表

    >HTML5画布(Canvas)元素 <canvas id="myCanvas" width="500" height="300" ...

  3. tkinter中的canvas的边框问题

    使用tkinter中创建canvas时,会设置canvas的宽高.一般我们认为canvas中画图区域就是设置的宽高.其实这不太正确,canvas还有一个边框,如果不另外设置,真正的画图区域要减去边框. ...

  4. tkinter笔记:scale 尺度 (莫烦python笔记)

    1 主题框架 还是一样的 import tkinter as tkwindow = tk.Tk() #创建窗口window.title('my window') #窗口标题window.geometr ...

  5. tkinter 笔记: radiobutton 选择按钮(莫烦python笔记)

    1 主体框架还是那个主体框架 window = tk.Tk() window.title('my window') window.geometry('500x500') 2 设置tkinter的文字变 ...

  6. tkinter 笔记:列表部件 listbox (莫烦python 笔记)

    1  主体框架 主体框架部分还是 import tkinter as tkwindow = tk.Tk() #创建窗口window.title('my window') #窗口标题window.geo ...

  7. tkinter 笔记:创建输入框并显示结果 (莫烦python笔记)

    1 主体框架 主题框架部分还是一样的 tkinter 笔记 :主体框架&窗口内容_UQI-LIUWJ的博客-CSDN博客 import tkinter as tkwindow = tk.Tk( ...

  8. tkinter笔记:通过点击button 控制标签的显示 (莫烦python笔记)

    tkinter 笔记 :主体框架&窗口内容_UQI-LIUWJ的博客-CSDN博客 中,我们知道了tkinter的主体框架 现在我们需要做这么一个操作:每点一次按钮,标签变化一次 1 首先是和 ...

  9. Python GUI编程(Tkinter)笔记

    Python GUI编程Tkinter笔记 1 显示任意格式图片 2 固定框架Frame大小 3 选择文件夹或文件 4 展示菜单栏 5 展示选择的图片 1 显示任意格式图片 Tkinter只支持显示G ...

最新文章

  1. DFS:深入优先搜索 POJ-2386 Lake Counting
  2. GOOGLE域名存在漏洞,可以用来建立钓鱼站点(目前已临时被封闭)
  3. Deep Learning菜鸡篇,我的第一个深度神经网络
  4. ArcGIS学习记录—KMZ KML与SHP文件互相转换
  5. java中负数取整_Java取整,固定保留两位小数,适配负数、金融数字。
  6. 平衡树 - FHQ 学习笔记
  7. jboss4.2.3_JBoss 4.2.x Spring 3 JPA Hibernate教程
  8. robot framework集成Jenkins环境
  9. 【Flink】Flink流式导入Hbase 【视频笔记】
  10. 设计灵感|C4D在海报中可以这样应用
  11. ICCV2019论文题目中文列表
  12. 如何批量设置 Word 文档的打开密码?
  13. Load和Initialize的区别和使用
  14. 关于LCD_ShowString的顽固感叹号!
  15. cmd跑绿色代码_cmd代码大全
  16. python数据库-2
  17. android局部布局刷新,Android RecyclerView 局部刷新分析
  18. 金融大数据分析-Jupyter-Python3-资产定价模型-CAPM
  19. [007]爬虫系列 | 猿人学爬虫攻防大赛 | 第二题: js 混淆 - 动态Cookie
  20. 1079 密码(二进制常识)

热门文章

  1. ACR2010_MTX单药治疗临床疗效良好但放射学进展的早期RA患者的预测因素和临床意义...
  2. .NET基础示例系列之二十:对图片的几种简单处理
  3. 正则表达式,以前总结的,大不分来择自网上
  4. 分数化小数c语言题目,习题 2-5 分数化小数 (decimal)(C语言版)
  5. quartz持久化是指_面试必问:Redis 持久化是如何做的?RDB 和 AOF 对比分析
  6. mysql数据库优化大全_MySQL数据库优化技巧大全
  7. python 元组使用_Python3
  8. 对计算机图形学知识总结第二版,计算机图形学入门总结!
  9. 集合竞价如何买入_集合竞价的那些事:开盘涨停,这样做你也能抢到!
  10. linux系统12,Linux操作系统12则经典应用技巧