大部分情况下,使用控件就可以满足简单程序的需求,但是总会存在某些场景需要自己绘制一些内容,这时就需要使用Canvas控件了。例如下面的围棋表示程序。

以下结合这个实例说明Canvas控件的基本用法。

和使用其他控件一样构建主窗口:

# create the main windowroot = Tk()

决定棋盘路数和路间距:

# config go panspace = 30pan_size = 13

用生成其他控件相似的方法生成Canvas控件,width和height分别用于指定控件的宽度和高度。

# create canvascanvas = Canvas(root, height= space * pan_size, width= space * pan_size)canvas.grid(row=0, column=0)

接下来的描画动作都通过Canvas控件进行。

生成构建棕色矩形棋盘。参数为的左上角、右下角坐标和填充颜色。

# crate pancanvas.create_rectangle(space / 2, space / 2,                        space * pan_size - space / 2, space * pan_size - space / 2,                        fill = '#eeaa40')

通过直线对象描画棋盘格。

# draw horizental linesfor r in range(0, pan_size):    canvas.create_line(space / 2, space / 2 + r * space,                       space * pan_size - space / 2, space / 2 + r * space)# draw vertical linesfor c in range(0, pan_size):    canvas.create_line(space / 2 + c * space, space / 2,                       space / 2 + c * space, space * pan_size - space / 2)

棋子描画函数利用椭圆形对象和Text对象描画黑子和白子,如果指定了number参数,还可以在棋子上生成反白文字。

#color enum valueclass GoColor(Enum):    WHITE = 0    BLACK = 1
# create fontftTimes = Font(family='Times', size=12)
# add godef set_go(row, col, color, number=0):    r = 11    go_color = 'white'    font_color = 'black'    if color==GoColor.BLACK:        go_color = 'black'        font_color = 'white'    # add go shape    canvas.create_oval(space / 2 + col * space - r, space / 2 + row * space - r,                       space / 2 + col * space + r, space / 2 + row * space + r,                       fill=go_color)    # add number    if number>0:        canvas.create_text(space / 2 + col * space, space / 2 + row * space,                           font=ftTimes, fill=font_color,                           text=str(number))

代码在生成椭圆形时指定的参数是左上角、右下角坐标和填充颜色;生成文字对象时指定的是位置、字体和文字。

最后按照小目定式的一种增加若干棋子。

# add gos.set_go(3, 10, GoColor.BLACK)set_go(3, 8, GoColor.WHITE)set_go(5, 10, GoColor.BLACK, 1)set_go(2, 10, GoColor.WHITE, 2)set_go(2, 11, GoColor.BLACK, 3)set_go(2, 9, GoColor.WHITE, 4)set_go(1, 11, GoColor.BLACK, 5)set_go(2, 4, GoColor.WHITE, 6)

完整代码可以从以下地址下载:

https://github.com/xueweiguo/TkinterPrimer/blob/master/Sample/22%20Canvas.py

觉得本文有帮助?请分享给更多人。

更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】

Tkinter编程应知应会(22)-Canvas控件相关推荐

  1. 保存图像_06 - matplotlib中应知应会numpy存储、交换图像

    matplotlib中应知应会numpy存储.交换图像 numpy的ndarray是mpl官方推荐的输入数据结构 mpl官方推荐绘图时,应以numpy的ndarray数据结构输入数据.虽然有时用pan ...

  2. 职称计算机初级应知应会书,2017专业技术职称申报应知应会.ppt

    2017专业技术职称申报应知应会 关于转系列评审 申报转评某一系列专业技术职称,申报条件参照该技术职称条件要求执行. 此外: 之前的计算机.外语资历有效. 若申请转评的职称条件中有计算机.外语要求而之 ...

  3. k3 物料收发明细表sql_物料管理:班组长物料使用应知应会4件事

    阅读导航→ 01 物料使用前检查 02 物料台面摆放 03 物料消耗控制 04 生产废料处理 一.物料使用前检查 为判定物料投入生产前的质量,预防不合格.不正确的物料投入使用,班组长需督促.指导班组员 ...

  4. 计算机应知应会培训班,应知应会培训、测试方案(报省里)

    2015年度宜昌市专业技术人员外语.计算机应知应会 知识培训.测试实施方案 根据鄂职改办[2005]82号文件要求及宜市职改办[2015]1号文件安排,现就2015年度外语.计算机应知应会知识培训.测 ...

  5. 农村义务教育经费保障机制改革校长应知应会卡

    农村义务教育经费保障机制改革校长应知应会卡 (二OO八年八月) 1.国家给学校的钱有哪些? 答:主要有四大项:一是按照教师人头核发的教师工资,二是按学生人数和定额标准核拨的公用经费,2008年,省定最 ...

  6. 应知应会的Word图片技巧(转)

    应知应会的Word图片技巧(转) 在使用Word编辑文档时,为了使文档图文并茂,难免要与Word中的图片打交道,以下是笔者总结的十则Word图片技巧,在此与您分享.     一.在Word文档中抠出图 ...

  7. 天翼云应知应会认证重点知识手册

    天翼云应知应会认证核心知识点 1 天翼云认证应知应会重点知识点串讲 第一部分:基础知识能力提升板块 一.基础知识(选修) 1.服务器基础(选修) 必备掌握知识点: (1)1967 年和1977 年分别 ...

  8. 嵌入式从业者应知应会知识点 - 索引

    大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家介绍的是嵌入式从业者应知应会知识点. 嵌入式开发需要掌握的知识点非常多,不同的技术方向有不同的知识侧重点,本系列试图整理总结嵌入式开发(尤其是 ...

  9. HTTP应知应会知识点复习手册(下)

    前言 本文快速回顾了常考的的知识点,用作面试复习,事半功倍. 面试知识点复习手册 全复习手册文章导航 Csdn全复习手册文章导航: https://blog.csdn.net/qqxx6661/art ...

最新文章

  1. 从编程小白到全栈开发:基于框架开发服务端
  2. S3C6410嵌入式应用平台构建(六)——linux-3.14.4移植到OK6410-(Yaffs2文件系统移植)...
  3. WINDOWS故障修复台 免去重装的烦恼
  4. js操作节点对象-getElementById
  5. 算法分析与设计-实验三 贪心算法设计
  6. 已饱和!未来程序员没活路了...
  7. DFF(深度前馈网络)学习参考
  8. ubuntu 12.04安装与配置
  9. 德国高级码农可赚年薪20万,但他们不在乎钱
  10. Android WebView 问题总集
  11. 基于BAE微信公众账号管理系统答辩PPT免费下载
  12. linux常见术语示意
  13. 4600显卡linux驱动,下载:NVIDIA显卡Linux驱动304.64版
  14. 基于Java Web的网络考试系统
  15. 卡尔曼滤波算法详细推导
  16. egret引擎p2物理引擎(2) - 小球碰撞地面搞笑的物理现象
  17. 【隧道篇 / IPsec】(5.6) ❀ 01. IPsec 结构与需求 ❀ FortiGate 防火墙
  18. Stack Overflow:最令人讨厌的编程语言
  19. 电子与计算机工程导论,BGPLUS科研荟萃 | 杜克大学 | 电子工程、计算机工程:电子与计算机工程导论...
  20. 蓝牙模块芯片型号有哪些?国产还是进口?核心指标有哪些

热门文章

  1. ES6 语法 - Symbol
  2. 惠普COMPAQ Presario 3500声卡驱动
  3. Matplotlib:可视化颜色命名分类和映射颜色分类
  4. 跑包软件安卓版_推荐四个完全免费的自然拼读App(有配套教材、音频、视频、白板软件)...
  5. 凌云仓库管理系统——好用的仓库管理系统
  6. linux服务器开发人员必须要彻底理解的关于【Linux】IO的线程模型
  7. 软件测试(四)测试分类
  8. 如何利用PMO有效管理项目资源?
  9. 搜狐在武汉建研发中心 布局云计算和移动互联网
  10. 在微型计算机中术语svga是指,计算机试题分解.doc