tkinter库Canvas操作三个实例

实例一:涂鸦

import tkinter as tk
import pyautogui as ag
from time import sleepdef paint(event):x1, y1 = (event.x - 1), (event.y - 1)x2, y2 = (event.x + 1), (event.y + 1)tCanvas.create_oval(x1, y1, x2, y2, fill = "black")def moveRect(w,h):ag.moveRel(w,0, duration=w/1000)  # moveRel移动  # dragRel拖曳ag.moveRel(0,h, duration=h/1000)ag.moveRel(-w,0, duration=w/1000)ag.moveRel(0,-h, duration=h/1000)sleep(0.5)win = tk.Tk()W,H = 640,480
X,Y = win.maxsize() #获取屏幕分辨率 或者用: X,Y = ag.size()
winPos = f'{W}x{H}+{(X-W)//2}+{(Y-H)//2}'
win.geometry(winPos)
win.resizable(False, False)
win.title('桌面分辨率:'+str(X)+"x"+str(Y))
win.update()tCanvas = tk.Canvas(win, width = win.winfo_width(), height = 400, bg = 'white')
tCanvas.pack(side = "top")tCanvas.bind("<B1-Motion>", paint)
tCanvas.update()
tk.Label(win, text = "画布作图").pack(side = "bottom")
x0,y0 = 150,60
w,h = 350,160
x , y = win.winfo_rootx()+x0, win.winfo_rooty()+y0
ag.moveTo(x, y, duration=0.5)moveRect(w,h)
#画直线
tCanvas.create_line(x0, y0, x0+w, y0)
tCanvas.create_line(x0+w, y0, x0+w, y0+h)
#可以把左上和右下两个坐标点一起赋值给变量
coord = x0+w, y0+h, x0, y0+h
tCanvas.create_line(coord)
coord = x0, y0+h, x0, y0
tCanvas.create_line(coord, fill = 'blue')
tCanvas.update()moveRect(w-h/3,h)
#画矩形
coord = x0+1,y0+1,x0+w-1-h/3,y0+h-1
tCanvas.create_rectangle(coord,fill='limegreen')
tCanvas.update()moveRect(h,h)
#画圆或椭圆
coord = x0,y0,x0+h,y0+h
tCanvas.create_oval(coord,fill='deepskyblue')
tCanvas.update()
x0=x0+h/2
ag.moveRel(h/2,0)
moveRect(w-h/2,h)
coord = x0,y0,x0+w-h/2,y0+h
tCanvas.create_oval(coord,fill='deeppink')
tCanvas.update()#画扇形、弓形或一段弧
#type = PIESLICE 扇形、CHORD 弓形、ARC 弧形
sleep(1)
coord = 100, 100, 300, 300
tCanvas.create_arc(coord,start=0,extent=180,fill='gold')
tCanvas.update()
sleep(1)
coord = 240, 60, 490, 310
#颜色也可用6位16进制数的GRB值表示
tCanvas.create_arc(coord,style=tk.CHORD,start=10,fill='#7CFC00')
tCanvas.update()
sleep(1)
coord = 180, 10, 470, 300
tCanvas.create_arc(coord,style=tk.ARC,width=3,dash=6,extent=-180)
#参数有很多,可以上网搜相关参数表win.mainloop()

运行效果图:

注:程序运行时,按下鼠标左键就可以在画布上作图,上图 python 字样就是本人所画 ^_^

还有其它作图函数:

# 多边形、三角形
tCanvas.create_polygon((10,100,10,180,100,180),fill='blue')# 文字
tCanvas.create_text((150,50),text=u'输出文字',anchor=E)# 位图
bmap={1:'error',2:'info',3:'question',4:'hourglass'}
for i in bmap:tCanvas.create_bitmap((20*i,20),bitmap=bmap[i])# 调入图片
img=PhotoImage(file='D:/pictures/exam.gif')
tCanvas.create_image((200,200),image=img)
tCanvas.pack()

实例二:颜色表

import tkinter as tkwin = tk.Tk()X,Y = win.maxsize() #获取屏幕分辨率
W,H = 1200,800
winPos = f'{W}x{H}+{(X-W)//2}+{(Y-H)//2}'
win.geometry(winPos)
win.resizable(False, False)
winTitle = f'桌面分辨率:{X}x{Y}{" "*6}窗口大小:{W}x{H}'
win.title(winTitle)
win.update()colorTuple=(
('black',                '#000000'),
('navy',                 '#000080'),
('darkblue',             '#00008B'),
('mediumblue',           '#0000CD'),
('blue',                 '#0000FF'),
('darkgreen',            '#006400'),
('green',                '#008000'),
('teal',                 '#008080'),
('darkcyan',             '#008B8B'),
('deepskyblue',          '#00BFFF'),
('darkturquoise',        '#00CED1'),
('mediumspringgreen',    '#00FA9A'),
('lime',                 '#00FF00'),
('springgreen',          '#00FF7F'),
('aqua',                 '#00FFFF'),
('cyan',                 '#00FFFF'),
('midnightblue',         '#191970'),
('dodgerblue',           '#1E90FF'),
('lightseagreen',        '#20B2AA'),
('forestgreen',          '#228B22'),
('seagreen',             '#2E8B57'),
('darkslategray',        '#2F4F4F'),
('limegreen',            '#32CD32'),
('mediumseagreen',       '#3CB371'),
('turquoise',            '#40E0D0'),
('royalblue',            '#4169E1'),
('steelblue',            '#4682B4'),
('darkslateblue',        '#483D8B'),
('mediumturquoise',      '#48D1CC'),
('indigo',               '#4B0082'),
('darkolivegreen',       '#556B2F'),
('cadetblue',            '#5F9EA0'),
('cornflowerblue',       '#6495ED'),
('mediumaquamarine',     '#66CDAA'),
('dimgray',              '#696969'),
('slateblue',            '#6A5ACD'),
('olivedrab',            '#6B8E23'),
('slategray',            '#708090'),
('lightslategray',       '#778899'),
('mediumslateblue',      '#7B68EE'),
('lawngreen',            '#7CFC00'),
('chartreuse',           '#7FFF00'),
('aquamarine',           '#7FFFD4'),
('maroon',               '#800000'),
('purple',               '#800080'),
('olive',                '#808000'),
('gray',                 '#808080'),
('skyblue',              '#87CEEB'),
('lightskyblue',         '#87CEFA'),
('blueviolet',           '#8A2BE2'),
('darkred',              '#8B0000'),
('darkmagenta',          '#8B008B'),
('saddlebrown',          '#8B4513'),
('darkseagreen',         '#8FBC8F'),
('lightgreen',           '#90EE90'),
('mediumpurple',         '#9370DB'),
('darkviolet',           '#9400D3'),
('palegreen',            '#98FB98'),
('darkorchid',           '#9932CC'),
('yellowgreen',          '#9ACD32'),
('sienna',               '#A0522D'),
('brown',                '#A52A2A'),
('darkgray',             '#A9A9A9'),
('lightblue',            '#ADD8E6'),
('greenyellow',          '#ADFF2F'),
('paleturquoise',        '#AFEEEE'),
('lightsteelblue',       '#B0C4DE'),
('powderblue',           '#B0E0E6'),
('firebrick',            '#B22222'),
('darkgoldenrod',        '#B8860B'),
('mediumorchid',         '#BA55D3'),
('rosybrown',            '#BC8F8F'),
('darkkhaki',            '#BDB76B'),
('silver',               '#C0C0C0'),
('mediumvioletred',      '#C71585'),
('indianred',            '#CD5C5C'),
('peru',                 '#CD853F'),
('chocolate',            '#D2691E'),
('tan',                  '#D2B48C'),
('lightgray',            '#D3D3D3'),
('thistle',              '#D8BFD8'),
('orchid',               '#DA70D6'),
('goldenrod',            '#DAA520'),
('palevioletred',        '#DB7093'),
('crimson',              '#DC143C'),
('gainsboro',            '#DCDCDC'),
('plum',                 '#DDA0DD'),
('burlywood',            '#DEB887'),
('lightcyan',            '#E0FFFF'),
('lavender',             '#E6E6FA'),
('darksalmon',           '#E9967A'),
('violet',               '#EE82EE'),
('palegoldenrod',        '#EEE8AA'),
('lightcoral',           '#F08080'),
('khaki',                '#F0E68C'),
('aliceblue',            '#F0F8FF'),
('honeydew',             '#F0FFF0'),
('azure',                '#F0FFFF'),
('wheat',                '#F5DEB3'),
('beige',                '#F5F5DC'),
('whitesmoke',           '#F5F5F5'),
('mintcream',            '#F5FFFA'),
('ghostwhite',           '#F8F8FF'),
('salmon',               '#FA8072'),
('sandybrown',           '#FAA460'),
('antiquewhite',         '#FAEBD7'),
('linen',                '#FAF0E6'),
('lightgoldenrodyellow', '#FAFAD2'),
('oldlace',              '#FDF5E6'),
('red',                  '#FF0000'),
('fuchsia',              '#FF00FF'),
('magenta',              '#FF00FF'),
('deeppink',             '#FF1493'),
('orangered',            '#FF4500'),
('tomato',               '#FF6347'),
('hotpink',              '#FF69B4'),
('coral',                '#FF7F50'),
('darkorange',           '#FF8C00'),
('lightsalmon',          '#FFA07A'),
('orange',               '#FFA500'),
('lightpink',            '#FFB6C1'),
('pink',                 '#FFC0CB'),
('gold',                 '#FFD700'),
('peachpuff',            '#FFDAB9'),
('navajowhite',          '#FFDEAD'),
('moccasin',             '#FFE4B5'),
('bisque',               '#FFE4C4'),
('mistyrose',            '#FFE4E1'),
('blanchedalmond',       '#FFEBCD'),
('papayawhip',           '#FFEFD5'),
('lavenderblush',        '#FFF0F5'),
('seashell',             '#FFF5EE'),
('cornsilk',             '#FFF8DC'),
('lemonchiffon',         '#FFFACD'),
('floralwhite',          '#FFFAF0'),
('snow',                 '#FFFAFA'),
('yellow',               '#FFFF00'),
('lightyellow',          '#FFFFE0'),
('ivory',                '#FFFFF0'),
('white',                '#FFFFFF'))tv = tk.Canvas(win, width = win.winfo_width(), height = win.winfo_height())
tv.pack(side = "top")i = 0
rows = 35
w, h = 40, 10
w1, h1, h2 = 100, 28, 22
for ct in colorTuple:j = (i//rows) * 300k = i * h2 - (i//rows) * h2 * rowsx,y = j + w, k + hcoord = x, y, j + w1, k + h1tv.create_rectangle(coord,fill=ct[1])tv.create_text((x+70,y+9),text=ct[1],anchor=tk.W,font=("宋体",9))tv.create_text((x+120,y+9),text=ct[0],anchor=tk.W,font=("宋体",9))i+=1tv.update()for i in colorTuple:print(i[0],'\t' if len(i[0])>14 else '\t\t' if len(i[0])>6 else '\t\t\t',i[1])

运行效果图:

这些颜色已经足够多了,但据说装了seaborn扩展的话xkcd_rgb包含的颜色数(有英文名称的)会有更多......

实例三:围棋盘

import tkinter as tkwin = tk.Tk()
X,Y = win.maxsize()
W,H = 800,800
winPos = f'{W}x{H}+{(X-W)//2}+{(Y-H)//2}'
winTitle = f'桌面分辨率:{X}x{Y}{" "*6}窗口大小:{W}x{H}'
win.geometry(winPos)
win.resizable(False, False)
win.title(winTitle)
win.update()tv = tk.Canvas(win, width = win.winfo_width(), height = win.winfo_height())
tv.pack(side = "top")for i in range(18):coord = 40, 40, 760, i*40 + 80tv.create_rectangle(coord)coord = 40, 40, i*40 + 80, 760tv.create_rectangle(coord)coord = 40, 40, 760, 760
tv.create_rectangle(coord,width=2)x = (160,160,160,400,400,400,640,640,640)
y = (160,400,640,160,400,640,160,400,640)for i in range(9):tv.create_oval(x[i]-2,y[i]-2,x[i]+2,y[i]+2,fill='black')tv.update()

运行效果图:

实例一中用到的 pyautogui,相关文章请见:

《Python GUI库pyautogui 0.9.52的下载、安装和使用》

附例二输出的颜色列表:

black              #000000
navy              #000080
darkblue          #00008B
mediumblue          #0000CD
blue              #0000FF
darkgreen          #006400
green              #008000
teal              #008080
darkcyan          #008B8B
deepskyblue          #00BFFF
darkturquoise          #00CED1
mediumspringgreen      #00FA9A
lime              #00FF00
springgreen          #00FF7F
aqua              #00FFFF
cyan              #00FFFF
midnightblue          #191970
dodgerblue          #1E90FF
lightseagreen          #20B2AA
forestgreen          #228B22
seagreen          #2E8B57
darkslategray          #2F4F4F
limegreen          #32CD32
mediumseagreen          #3CB371
turquoise          #40E0D0
royalblue          #4169E1
steelblue          #4682B4
darkslateblue          #483D8B
mediumturquoise      #48D1CC
indigo              #4B0082
darkolivegreen          #556B2F
cadetblue          #5F9EA0
cornflowerblue          #6495ED
mediumaquamarine      #66CDAA
dimgray          #696969
slateblue          #6A5ACD
olivedrab          #6B8E23
slategray          #708090
lightslategray          #778899
mediumslateblue      #7B68EE
lawngreen          #7CFC00
chartreuse          #7FFF00
aquamarine          #7FFFD4
maroon              #800000
purple              #800080
olive              #808000
gray              #808080
skyblue          #87CEEB
lightskyblue          #87CEFA
blueviolet          #8A2BE2
darkred          #8B0000
darkmagenta          #8B008B
saddlebrown          #8B4513
darkseagreen          #8FBC8F
lightgreen          #90EE90
mediumpurple          #9370DB
darkviolet          #9400D3
palegreen          #98FB98
darkorchid          #9932CC
yellowgreen          #9ACD32
sienna              #A0522D
brown              #A52A2A
darkgray          #A9A9A9
lightblue          #ADD8E6
greenyellow          #ADFF2F
paleturquoise          #AFEEEE
lightsteelblue          #B0C4DE
powderblue          #B0E0E6
firebrick          #B22222
darkgoldenrod          #B8860B
mediumorchid          #BA55D3
rosybrown          #BC8F8F
darkkhaki          #BDB76B
silver              #C0C0C0
mediumvioletred      #C71585
indianred          #CD5C5C
peru              #CD853F
chocolate          #D2691E
tan              #D2B48C
lightgray          #D3D3D3
thistle          #D8BFD8
orchid              #DA70D6
goldenrod          #DAA520
palevioletred          #DB7093
crimson          #DC143C
gainsboro          #DCDCDC
plum              #DDA0DD
burlywood          #DEB887
lightcyan          #E0FFFF
lavender          #E6E6FA
darksalmon          #E9967A
violet              #EE82EE
palegoldenrod          #EEE8AA
lightcoral          #F08080
khaki              #F0E68C
aliceblue          #F0F8FF
honeydew          #F0FFF0
azure              #F0FFFF
wheat              #F5DEB3
beige              #F5F5DC
whitesmoke          #F5F5F5
mintcream          #F5FFFA
ghostwhite          #F8F8FF
salmon              #FA8072
sandybrown          #FAA460
antiquewhite          #FAEBD7
linen              #FAF0E6
lightgoldenrodyellow      #FAFAD2
oldlace          #FDF5E6
red              #FF0000
fuchsia          #FF00FF
magenta          #FF00FF
deeppink          #FF1493
orangered          #FF4500
tomato              #FF6347
hotpink          #FF69B4
coral              #FF7F50
darkorange          #FF8C00
lightsalmon          #FFA07A
orange              #FFA500
lightpink          #FFB6C1
pink              #FFC0CB
gold              #FFD700
peachpuff          #FFDAB9
navajowhite          #FFDEAD
moccasin          #FFE4B5
bisque              #FFE4C4
mistyrose          #FFE4E1
blanchedalmond          #FFEBCD
papayawhip          #FFEFD5
lavenderblush          #FFF0F5
seashell          #FFF5EE
cornsilk          #FFF8DC
lemonchiffon          #FFFACD
floralwhite          #FFFAF0
snow              #FFFAFA
yellow              #FFFF00
lightyellow          #FFFFE0
ivory              #FFFFF0
white              #FFFFFF

Python tkinter库Canvas操作(附涂鸦、颜色表、围棋盘三个实例)相关推荐

  1. python tkinter库 密码实时显示_python tkinter库实现气泡屏保和锁屏

    本文实例为大家分享了python tkinter库实现气泡屏保和锁屏的具体代码,供大家参考,具体内容如下 显示效果如下: 代码: import random import tkinter import ...

  2. python tkinter进度条_在python tkinter中Canvas实现进度条显示的方法

    如下所示: from tkinter import * import time #更新进度条函数 def change_schedule(now_schedule,all_schedule): can ...

  3. python tkinter库实现华氏温度摄氏温度转换

    python tkinter库实现华氏温度摄氏温度转换 功能要求 创建GUI窗口 创建文本标签 创建可输入文本 按钮控件 创建显示文本框 温度转换函数-g 总程序 结束啦 功能要求 创建一个图形窗口, ...

  4. 使用python+Tkinter库构建GUI应用工具 - 个性签名工具

    使用python+Tkinter库构建GUI应用工具 - 个性签名工具 安装Tkinter及pillow库 pip install tkinter # 安装tkinter库 pip install p ...

  5. Python tkinter库:简易画板(笔、直线、矩形、圆形和橡皮擦工具+导入、保存、撤销、清屏功能)

    Tkinter Tkinter是Python的一款功能强大且全面.操作简易的GUI编程模块.今天,我们将使用tkinter制作一款简易画图软件.加油吧! 最终效果如下: 下载模块 我们将使用Pytho ...

  6. Python+tkinter库实现简单图书管理系统

    文章目录 前言 一.MySQL是什么? 二.Tkinter库 三.Code步骤 1.引入库 2.使用tkinter搭建系统 3.定义函数(发送消息,操作mysql数据库) 总结 前言 使用mysql数 ...

  7. python tkinter库、添加gui界面_使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)...

    使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二),创建一个,界面,布局,文件,路径 使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二) ...

  8. 树回归--python Tkinter库创建GUI(2)

    简单的Tkinter库创建GUI的例子可参考: http://blog.csdn.net/lilong117194/article/details/78456376 下面是代码: # -*- codi ...

  9. python tkinter库 pack布局方法调用

    python的tkinter库pack布局方法调用 这个布局简单 tkinter.Label(window,text='今晚去庆祝',bg="back",fg='white').p ...

  10. python+tkinter使用canvas不显示图片的问题

    python+tkinter中使用canvas 切换不显示图片的问题 一.canvas使用 canvas对象的create_image方法有两个重要的点要注意,一个是格式,第二是要保持持续引用: 1. ...

最新文章

  1. 源码编译安装nginx1.4.7
  2. go 调用其他文件函数_一文读懂Go中软件包概念
  3. Windows环境下文件的彻底删除与恢复,推荐几个工具(整理)
  4. Cordova的安装及环境配置
  5. [验证码实现] Captcha 验证码类,一个很个性的验证码类 (转载)
  6. dd linux 格式化u盘启动盘_Ubuntu to go启动盘制作
  7. Leetcode 111.二叉树的最小深度
  8. leetcode -- Construct Binary Tree from Preorder and Inorder Traversal
  9. restfulframework详解
  10. SLAM--深度滤波器
  11. JavaScript——监听事件:点击鼠标,视频静音(原神官网)
  12. App消息推送策略:推送用户感兴趣的内容
  13. 办公室网络带宽叠加(有线和WiFi同时使用)
  14. 360度动态罗盘时钟HTML源码
  15. library sort (图书馆排序)
  16. Linux—系统安全及应用
  17. 从零开始大数据--Hadoop、HDFS、MapReduce、HBase、Hive
  18. 中缀表达式转后缀表达式两位数_什么是圆形磁动势?永磁无刷电机是怎么转起来的?...
  19. 读《史蒂夫•乔布斯传》(二)
  20. layui card高度不匹配文字

热门文章

  1. Python+Django+MySQL资产管理系统
  2. android的NDK安装及工程实例
  3. Ubuntu16.04 + 微软kinect 2 实现rgbdslam V2
  4. vscode html修改默认浏览器,vscode修改默认浏览器的方法
  5. foobar2000后台运行
  6. 菜鸟初步设计的开放平台框架
  7. 笔记本连不上网(IPV4和IPV6无网络访问权限)解决方法
  8. 现代魔法学院——闲聊哈希表及哈希表的链地址法实现
  9. 如何快速部署企业私有云存储
  10. 模N计数器-计数+使能信号