Tkinter编程应知应会(22)-Canvas控件
大部分情况下,使用控件就可以满足简单程序的需求,但是总会存在某些场景需要自己绘制一些内容,这时就需要使用Canvas控件了。例如下面的围棋表示程序。
以下结合这个实例说明Canvas控件的基本用法。
和使用其他控件一样构建主窗口:
# create the main window
root = Tk()
决定棋盘路数和路间距:
# config go pan
space = 30
pan_size = 13
用生成其他控件相似的方法生成Canvas控件,width和height分别用于指定控件的宽度和高度。
# create canvas
canvas = Canvas(root, height= space * pan_size, width= space * pan_size)
canvas.grid(row=0, column=0)
接下来的描画动作都通过Canvas控件进行。
生成构建棕色矩形棋盘。参数为的左上角、右下角坐标和填充颜色。
# crate pan
canvas.create_rectangle(space / 2, space / 2,
space * pan_size - space / 2, space * pan_size - space / 2,
fill = '#eeaa40')
通过直线对象描画棋盘格。
# draw horizental lines
for 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 lines
for 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 value
class GoColor(Enum):
WHITE = 0
BLACK = 1
# create font
ftTimes = Font(family='Times', size=12)
# add go
def 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控件相关推荐
- 保存图像_06 - matplotlib中应知应会numpy存储、交换图像
matplotlib中应知应会numpy存储.交换图像 numpy的ndarray是mpl官方推荐的输入数据结构 mpl官方推荐绘图时,应以numpy的ndarray数据结构输入数据.虽然有时用pan ...
- 职称计算机初级应知应会书,2017专业技术职称申报应知应会.ppt
2017专业技术职称申报应知应会 关于转系列评审 申报转评某一系列专业技术职称,申报条件参照该技术职称条件要求执行. 此外: 之前的计算机.外语资历有效. 若申请转评的职称条件中有计算机.外语要求而之 ...
- k3 物料收发明细表sql_物料管理:班组长物料使用应知应会4件事
阅读导航→ 01 物料使用前检查 02 物料台面摆放 03 物料消耗控制 04 生产废料处理 一.物料使用前检查 为判定物料投入生产前的质量,预防不合格.不正确的物料投入使用,班组长需督促.指导班组员 ...
- 计算机应知应会培训班,应知应会培训、测试方案(报省里)
2015年度宜昌市专业技术人员外语.计算机应知应会 知识培训.测试实施方案 根据鄂职改办[2005]82号文件要求及宜市职改办[2015]1号文件安排,现就2015年度外语.计算机应知应会知识培训.测 ...
- 农村义务教育经费保障机制改革校长应知应会卡
农村义务教育经费保障机制改革校长应知应会卡 (二OO八年八月) 1.国家给学校的钱有哪些? 答:主要有四大项:一是按照教师人头核发的教师工资,二是按学生人数和定额标准核拨的公用经费,2008年,省定最 ...
- 应知应会的Word图片技巧(转)
应知应会的Word图片技巧(转) 在使用Word编辑文档时,为了使文档图文并茂,难免要与Word中的图片打交道,以下是笔者总结的十则Word图片技巧,在此与您分享. 一.在Word文档中抠出图 ...
- 天翼云应知应会认证重点知识手册
天翼云应知应会认证核心知识点 1 天翼云认证应知应会重点知识点串讲 第一部分:基础知识能力提升板块 一.基础知识(选修) 1.服务器基础(选修) 必备掌握知识点: (1)1967 年和1977 年分别 ...
- 嵌入式从业者应知应会知识点 - 索引
大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家介绍的是嵌入式从业者应知应会知识点. 嵌入式开发需要掌握的知识点非常多,不同的技术方向有不同的知识侧重点,本系列试图整理总结嵌入式开发(尤其是 ...
- HTTP应知应会知识点复习手册(下)
前言 本文快速回顾了常考的的知识点,用作面试复习,事半功倍. 面试知识点复习手册 全复习手册文章导航 Csdn全复习手册文章导航: https://blog.csdn.net/qqxx6661/art ...
最新文章
- 从编程小白到全栈开发:基于框架开发服务端
- S3C6410嵌入式应用平台构建(六)——linux-3.14.4移植到OK6410-(Yaffs2文件系统移植)...
- WINDOWS故障修复台 免去重装的烦恼
- js操作节点对象-getElementById
- 算法分析与设计-实验三 贪心算法设计
- 已饱和!未来程序员没活路了...
- DFF(深度前馈网络)学习参考
- ubuntu 12.04安装与配置
- 德国高级码农可赚年薪20万,但他们不在乎钱
- Android WebView 问题总集
- 基于BAE微信公众账号管理系统答辩PPT免费下载
- linux常见术语示意
- 4600显卡linux驱动,下载:NVIDIA显卡Linux驱动304.64版
- 基于Java Web的网络考试系统
- 卡尔曼滤波算法详细推导
- egret引擎p2物理引擎(2) - 小球碰撞地面搞笑的物理现象
- 【隧道篇 / IPsec】(5.6) ❀ 01. IPsec 结构与需求 ❀ FortiGate 防火墙
- Stack Overflow:最令人讨厌的编程语言
- 电子与计算机工程导论,BGPLUS科研荟萃 | 杜克大学 | 电子工程、计算机工程:电子与计算机工程导论...
- 蓝牙模块芯片型号有哪些?国产还是进口?核心指标有哪些