Python编程tkinter库Canvas实现涂鸦颜色表及围棋盘示例

目录
  • tkinter库Canvas操作三个实例
    • 实例一:涂鸦
      • 运行效果图:
      • 其它作图函数:
    • 实例二:颜色表
      • 运行效果图:
    • 实例三:围棋盘
      • 运行效果图:

tkinter库Canvas操作三个实例

实例一:涂鸦

import tkinter as tk
import pyautogui as ag
from time import sleep
def 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()
X,Y=ag.size()
winPos = "640x480+"
winPos += str((X-640)//2)+"+"
winPos += str((Y-480)//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 tk
import pyautogui as ag
win = tk.Tk()
X,Y=ag.size()
W,H=1200,800
winPos = str(W)+"x"+str(H)+"+"
winPos += str((X-W)//2)+"+"
winPos += str((Y-H)//2)
win.geometry(winPos)
win.resizable(False, False)
win.title('桌面分辨率:'+str(X)+"x"+str(Y)+' '*6+'窗口大小:'+str(W)+"x"+str(H))
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) * 300
    k = i * h2 - (i//rows) * h2 * rows
    x,y = j + w, k + h
    coord = x, y, j + w1, k + h1
    tv.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+=1
tv.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 tk
import pyautogui as ag
win = tk.Tk()
X,Y=ag.size()
W,H=800,800
winPos = str(W)+"x"+str(H)+"+"
winPos += str((X-W)//2)+"+"
winPos += str((Y-H)//2)
win.geometry(winPos)
win.resizable(False, False)
win.title('桌面分辨率:'+str(X)+"x"+str(Y)+' '*6+'窗口大小:'+str(W)+"x"+str(H))
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 + 80
    tv.create_rectangle(coord)
    coord = 40, 40, i*40 + 80, 760
    tv.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的下载、安装和使用》

以上就是Python编程tkinter库Canvas实现涂鸦颜色表及围棋盘示例的详细内容,更多关于Python编程tkinter库Canvas实现涂鸦颜色表围棋盘的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python tkinter常用操作代码实例

    这篇文章主要介绍了Python tkinter常用操作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.创建单选框 form tkinter import * #创建窗口体 window = tk() #初始化组合件绑定 w1 = IntVar() #设置初始选择项1 w1.set(1) def Occupation(): lable = Label(text="请选择职业").place(x=20,y=15) m=1 fo

  • python自带tkinter库实现棋盘覆盖图形界面

    python实现棋盘覆盖图形界面,供大家参考,具体内容如下 一.解决方案和关键代码 工具: python tkinter库 问题描述:   在一个2^k×2^k个方格组成的棋盘中,若有一个方格与其他方格不同,则称该方格为一特殊方格,且称该棋盘为一个特殊棋盘.显然特殊方格在棋盘上出现的位置有4^k种情形.因而对任何k≥0,有4^k种不同的特殊棋盘.   在棋盘覆盖问题中,要用下图中 4 中不同形态的 L 型骨牌覆盖一个给定的特殊棋牌上除特殊方格以外的所有方格,且任何 2 个 L 型骨牌不得重叠覆盖

  • python 实现围棋游戏(纯tkinter gui)

    1. 开始前 本程序基于tkinter生成GUI,使用前请确保已经安装好tkinter 对于windows用户,您可能已经安装了tkinter,cmd中输入python -c 'import tkinter',如果没有出错则已安装tkinter 对于linux用户,您可能未安装tkinter,使用包管理工具搜索tkinter,如:apt search tkinter,pacman -Ss tkinter,yum search tkinter,选择符合要求的软件包,然后安装,如果未找到,请自行下载

  • python tkinter canvas使用实例

    这篇文章主要介绍了python tkinter canvas使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 注:在使用 create_arc 绘制弧时,和 create_oval 的用法相似,因为弧是椭圆的一部分,因此同样也是指定左上角和右下角两个点的坐标. 默认总是绘制从 (x_1,y_1)开始,程序可通过 start 改变起始角度,也可通过 extent 改变转过的角度(逆时针旋转). from tkinter import * r

  • Python tkinter事件高级用法实例

    本文实例讲述了Python tkinter事件高级用法.分享给大家供大家参考,具体如下: 先来看看运行效果: 完整实例代码: # -*- coding:utf-8-*- #! python3 from tkinter import * import threading, time trace = 0 class CanvasEventsDemo: def __init__(self, parent=None): canvas = Canvas(width=300, height=300, bg=

  • Python编程tkinter库Canvas实现涂鸦颜色表及围棋盘示例

    目录 tkinter库Canvas操作三个实例 实例一:涂鸦 运行效果图: 其它作图函数: 实例二:颜色表 运行效果图: 实例三:围棋盘 运行效果图: tkinter库Canvas操作三个实例 实例一:涂鸦 import tkinter as tk import pyautogui as ag from time import sleep def paint(event): x1, y1 = (event.x - 1), (event.y - 1) x2, y2 = (event.x + 1),

  • python基于Tkinter库实现简单文本编辑器实例

    本文实例讲述了python基于Tkinter库实现简单文本编辑器的方法.分享给大家供大家参考.具体实现方法如下: ## {{{ http://code.activestate.com/recipes/578568/ (r1) from Tkinter import * from tkSimpleDialog import askstring from tkFileDialog import asksaveasfilename from tkMessageBox import askokcance

  • Python使用tkinter库实现文本显示用户输入功能示例

    本文实例讲述了Python使用tkinter库实现文本显示用户输入功能.分享给大家供大家参考,具体如下: #coding:utf-8 from Tkinter import * class App: def __init__(self,root): #定义帧 frame = Frame(root) frame.pack() self.frame = frame w = Label(frame,text = "calculator") w.pack() self.newinput() #

  • 使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)

    上一篇我们写了怎么将xmind转换成想要的excel格式,这篇再讲一下用Python自带的tkinter库设计一个简单的gui界面,让我们的xmind路径,用例版本执行等都通过这个gui界面来输入,生成我们需要的excel文件. Python要生成gui,库还是比较多的比如wxpython,这个我看了下,感觉比较难懂,毕竟只是设计一个比较简单的gui界面,所以就使用了tkinter库,感觉这个还是比较方便易懂的,大家可以在这里学习tkinter库http://c.biancheng.net/py

  • python编程PyAutoGUI库使用与安装简介

    如何通过python代码解放双手,或者通过代码实现自动的电脑鼠标or键盘操作呢? python的PyAutoGUI库是一个很好地选择. 首先根据下面这个网址下载PyAutoGUI https://pypi.org/project/PyAutoGUI/ 因为我使用的python的IDE是Pycharm,所以在Pycharm的terminal里输入下列代码: pip install PyAutoGUI 安装成功~~ 然后在Pycharm的setting的project interprer里把PyAu

  • Python编程求解二叉树中和为某一值的路径代码示例

    题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. 思路:首先要理解题意,是从根节点往子节点连. 1.如果只有根节点或者找到叶子节点,我们就把其对应的val值返回 2.如果不是叶子节点,我们分别对根节点的左子树.右子树进行递归,直到找到叶子结点.然后遍历把叶子结点和父节点对应的val组成的序列返回上一层:如果没找到路径,其实也返回了序列,只不过是[] 代码如下: # -*- coding:utf-

  • Python编程实现下载器自动爬取采集B站弹幕示例

    目录 实现效果 UI界面 数据采集 小结 大家好,我是小张! 在<Python编程实现小姐姐跳舞并生成词云视频示例>文章中简单介绍了B站弹幕的爬取方法,只需找到视频中的参数 cid,就能采集到该视频下的所有弹幕:思路虽然很简单,但个人感觉还是比较麻烦,例如之后的某一天,我想采集B站上的某个视频弹幕,还需要从头开始:找cid参数.写代码,重复单调: 因此我在想有没有可能一步到位,以后采集某个视频弹幕时只需一步操作,比如输入想爬取的视频链接,程序能自动识别下载 实现效果 基于此,借助 PyQt5

  • python采用requests库模拟登录和抓取数据的简单示例

    如果你还在为python的各种urllib和urlibs,cookielib 头疼,或者还还在为python模拟登录和抓取数据而抓狂,那么来看看我们推荐的requests,python采集数据模拟登录必备利器! 这也是python推荐的HTTP客户端库: 本文就以一个模拟登录的例子来加以说明,至于采集大家就请自行发挥吧. 代码很简单,主要是展现python的requests库的简单至极,代码如下: s = requests.session() data = {'user':'用户名','pass

  • Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】

    本文实例讲述了Python编程实现两个文件夹里文件的对比功能.分享给大家供大家参考,具体如下: #-*-coding:utf-8-*- #=============================================================================== # 目录对比工具(包含子目录 ),并列出 # 1.A比B多了哪些文件 # 2.B比A多了哪些文件 # 3.二者相同的文件:文件大小相同 VS 文件大小不同 (Size相同文件不打印:与Size不同文件显

  • python使用tkinter库实现五子棋游戏

    本文实例为大家分享了python实现五子棋游戏的具体代码,供大家参考,具体内容如下 一.运行截图: 二.代码 # 用数组定义一个棋盘,棋盘大小为 15×15 # 数组索引代表位置, # 元素值代表该位置的状态:0代表没有棋子,1代表有黑棋,-1代表有白棋. from tkinter import * from tkinter.messagebox import * class Chess(object): def __init__(self): ############# # param # #

随机推荐