Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python实战之tkinter库画图,用canver画布教你画卡通人物!

Python实战之tkinter库画图,用canver画布教你画卡通人物!

作者头像
灰小猿
发布于 2020-09-23 02:54:45
发布于 2020-09-23 02:54:45
1.8K02
代码可运行
举报
运行总次数:2
代码可运行

我们知道Python之所以强大,很大一方面都是因为它具有很多强大的第三方库。

而且Python很突出的一方面就是代码用户交互界面的实现,这一点在Python上也被称作GUI编程。

与此同时,Python的GUI编程最常用的库就是tkinter,它包含了很多Python交互界面编程所需要的函数。

最近就有一个客户需求在GUI界面实现卡通人物的点击动作,那么今天我就来和大家分享一个在tkinter库中使用画布绘制会动的哆啦A梦的一个骚操作。

tkinter库画图基本思路

在使用Python的tkinter库进行界面绘图时,必须要用到的就是设置Canvas画布,熟悉tkinter库的小伙伴应该都知道这个函数。

在设置好画布之后,就是我们的程序员大画家施展才艺的时候了,在这里呢大灰狼给小伙伴一个小小的建议,就是在进行Canvas绘画之前呢。

可以先根据画布的位置设置一个x、y轴的坐标中心,这样做的目的呢就是在使用代码作图的时候,方便根据坐标参数进行图形界面的布局设置,设置坐标轴的具体代码如下:

画虚线

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   line1 = w.create_line(0,200,400,200,fill="black",dash=(4,4))    #设置横向坐标线

    line2 = w.create_line(200,0,200,400,fill="black",dash=(4,4))    #设置纵向坐标线

设置好坐标轴之后就是开始哆啦A梦的大作了。

其实使用编程语言进行图形的绘制,大多数都是使用规则或不规则的图形组装拼接而成的

它就好像我们小时候玩积木一样,我们要做的就是将不同的积木(代码绘制的图形)拼装成我们想要的图形就可以了。

因此图形的绘制问题,最主要的就是什么形状的图形在哪里放置的问题了。

那么下面大灰狼就来和大家分享一下哆啦A梦的卡通图怎么画:

定义画原始人物的函数

def bt1_age():

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
```python
 #画虚线

    line1 = w.create_line(0,200,400,200,fill="black",dash=(4,4))    #设置横向坐标线

    line2 = w.create_line(200,0,200,400,fill="black",dash=(4,4))    #设置纵向坐标线

    #画圆脸

    w.create_oval((125,70,275,220),fill = 'blue')

    #画圆脸

    w.create_oval((140,100,260,220),fill = 'white')

    #画椭圆

    w.create_oval((200,80,230,120),fill = 'white')

    #画椭圆

    w.create_oval((170,80,200,120),fill = 'white')

    #画椭圆眼睛

    w.create_oval((203,92,215,108),fill = 'black')

    #画椭圆眼睛

    w.create_oval((185,92,197,108),fill = 'black')

    #画椭圆眼睛

    w.create_oval((206,95,212,105),fill = 'white')

    #画椭圆眼睛

    w.create_oval((188,95,194,105),fill = 'white')

    #画圆鼻子

    w.create_oval((193,115,207,130),fill = 'red')

    #嘴

    w.create_arc((140,60,260,180),style = 'arc',start = 240,extent = 60)#画弧线

    w.create_line(200,130,200,180,fill="black")#竖线

    #胡须

    w.create_line(215,150,245,150,fill="black")#横线

    w.create_line(155,150,185,150,fill="black")#横线

    w.create_line(158,127,185,137,fill="black")

    w.create_line(215,137,242,127,fill="black")

    w.create_line(158,170,185,163,fill="black")

    w.create_line(215,163,242,168,fill="black")

    #身体

    w.create_rectangle(150,200,250,285,fill="blue")     #身体正前方

    w.create_arc((160,190,240,270),style = 'chord',start = 135,extent = 270,fill = 'white')#画弧线

    w.create_line((150,200,250,200),fill="red",width = 10,capstyle = 'round')#圆滑轮廓线

    w.create_arc((185,270,215,300),style = 'chord',start = 0,extent = 180,fill = 'white')#画弧线

    w.create_line(185,285,215,285,fill="white")

    #画脚

    #画椭圆

    w.create_oval((140,275,190,295),fill = 'white')     #左脚

    w.create_oval((210,275,260,295),fill = 'white')     #右脚

    #画手

    w.create_polygon([150,205,150,235,120,250,120,235],outline="black",fill="blue")#手臂多边形

    w.create_polygon([250,205,250,235,280,250,280,235],outline="black",fill="blue")

    w.create_oval((110,230,135,255),fill = 'white')     #左圆形手掌

    w.create_oval((265,230,290,255),fill = 'white')     #右圆形手掌

    #画铃铛

    w.create_oval((190,200,210,220),fill = 'yellow')    #铃铛中心圆

    w.create_line((191,210,209,210),fill="black",width = 5,capstyle = 'round')#圆滑轮廓线

    w.create_line((192,210,208,210),fill="yellow",width = 3,capstyle = 'round')#圆滑轮廓线

    w.create_oval((198,213,202,217),fill = 'red')   #中心小红点

    w.create_line(200,218,200,220,fill="black")

    #画口袋

    w.create_arc((170,200,230,260),style = 'chord',start = 180,extent = 180,fill = 'white')#画弧线

以上这些呢就是定义哆啦A梦函数的基本操作了,那么接下来就是让哆啦A梦实现各种工作。

其实卡通人物每一个动作的实现其实是一幅全新的图画,通过多个这样图画函数,在点击触发某个动作的按钮时,调用该函数的图画即可。

那么接下来大灰狼来和大家分享几个有趣的动作变化。

点击眨眼

点击眨眼的函数大部分与定义哆啦A梦的函数相同,既然是眨眼的动作,那么最大的区别就是在眼睛上了,

因此在定义了眨眼函数之后,只需要眼部代码换成下方的闭眼代码就可以了, 闭眼动作代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#闭左眼
    w.create_line((185, 100, 195, 105), fill='black')   #闭左眼
    w.create_line((185, 105, 195, 105), fill='black')   #闭左眼
    w.create_line((185, 110, 195, 105), fill='black')   #闭左眼

    #闭右眼
    w.create_line((205, 105, 215, 100), fill='black')   #闭右眼
    w.create_line((205, 105, 215, 105), fill='black')   #闭右眼
    w.create_line((205, 105, 215, 110), fill='black')   #闭右眼

运动四肢

运动四肢的函数相对较复杂,因为需要实现手臂和双腿的同时运动,因此需要修改手臂代码和哆啦A梦的身体部分,具体的实现代码如下: 修改参数实现四肢运动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  w.create_rectangle(150,200,250,285,fill="blue")     #身体正前方

    w.create_arc((160,190,240,270),style = 'chord',start = 135,extent = 270,fill = 'white')#画弧线

    w.create_line((150,200,250,200),fill="red",width = 10,capstyle = 'round')#圆滑轮廓线

    w.create_arc((170,270,230,300),style = 'chord',start = 0,extent = 180,fill = 'white', outline = 'white')#画弧线使双腿张开

    w.create_line(185,285,215,285,fill="white")

    #画脚

    #画椭圆

    w.create_oval((130,275,170,295),fill = 'white')

    w.create_oval((230,275,270,295),fill = 'white')

下面部分是修改实现手臂运动的代码修改: 修改参数实现四肢运动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 w.create_rectangle(150,200,250,285,fill="blue")     #身体正前方

    w.create_arc((160,190,240,270),style = 'chord',start = 135,extent = 270,fill = 'white')#画弧线

    w.create_line((150,200,250,200),fill="red",width = 10,capstyle = 'round')#圆滑轮廓线

    w.create_arc((170,270,230,300),style = 'chord',start = 0,extent = 180,fill = 'white', outline = 'white')#画弧线使双腿张开

    w.create_line(185,285,215,285,fill="white")

    #画脚

    #画椭圆

    w.create_oval((130,275,170,295),fill = 'white')

    w.create_oval((230,275,270,295),fill = 'white')

色彩变化

看过哆啦A梦的小伙伴应该都知道哆啦A梦还有一个妹妹----一只黄色的哆啦A梦。

那么我们只需要修改部分代码就可以实现哆啦A梦的色彩变化了,在这里我们只需要将在进行绘制时所有的调用‘blue’的代码换成调用‘yellow’色彩即可,同样我们也可以根据自己的爱好绘制其他不同的色彩。

这样我们的哆啦A梦以及实现的各种不同的动作变化的函数就已经定义完成了,总结一下就是在画布定义不同的图形函数,根据需要依次调用函数即可!

完整的代码可以在https://download.csdn.net/download/weixin_44985880/12367814下载, * 或者关注微信公众号“灰狼洞主”回复 ‘哆啦A梦’即可获取GUI编程的哆啦A梦完整代码!*

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/04/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
python画朵玫瑰花
参考:https://www.jb51.net/article/137365.htm
周小董
2019/03/25
2.1K0
python画朵玫瑰花
tkinter -- Canvas(4)
先使用 PhotoImage 创建 GIF 图像,再将 image 属性来设置为新创建的 img
py3study
2018/08/03
7270
​Python | GUI编程之tkinter (一)
本文内容为使用Python3的tkinter模块,开发GUI。在阅读本文前,请确保你已经或可能满足以下条件:
LogicPanda
2019/07/30
6.1K0
用python画圣诞树、樱花树、卡通图案及打包成exe文件[通俗易懂]
如何将python代码生成exe文件,直接在桌面运行请参考文章:如何将python文件打包成exe格式
全栈程序员站长
2022/09/27
1K0
用python画圣诞树、樱花树、卡通图案及打包成exe文件[通俗易懂]
python画一个可爱的皮卡丘(完整代码)
然后不说那么多,我就直接上代码了,主要是为了好玩,需要讲解的,可以直接看我发的海龟入门:
川川菜鸟
2021/10/18
30.5K1
#哆啦A梦
write('by dongdong', font=("Bradley Hand ITC", 30, "bold"))
用户2793313
2018/07/29
8850
#哆啦A梦
如何用tkinter给你女朋友画一个爱心,这满满的油腻感是怎么回事?
那这次与之前是不同的,这次,我们直接用tkinter画出来。需要使用到画,那就需要知道画布的功能。
大家一起学编程
2021/12/16
9670
如何用tkinter给你女朋友画一个爱心,这满满的油腻感是怎么回事?
Python-turtle库绘图
turtle(海龟)库是turtle绘图体系的Python实现,turtle库是一种标准库,是Python自带的。
wangmcn
2022/07/25
1.8K0
Python-turtle库绘图
软件测试|超好用超简单的Python GUI库——tkinter(十五)
上一篇文章我们介绍了tkinter的Canvas画布控件,并且使用画布控件绘制了线条,本篇文章我们将介绍使用Canvas绘制更多图形。
霍格沃兹测试开发Muller老师
2023/06/02
6940
教你用Python写界面
作为Pyhon开发者,你迟早都会碰到图形用户界面(GUI)应用开发任务,这时候我们就需要一些界面库来帮助我们快速搭建界面,python的界面库很多,我认识的并不多,这里只列出几种我认识的
py3study
2020/01/07
4.6K0
教你用Python写界面
python开发_tkinter_小球完全弹性碰撞游戏_源码下载
===================================================
Hongten
2018/09/13
1.4K0
python开发_tkinter_小球完全弹性碰撞游戏_源码下载
七夕表白代码合集
七夕节,又称“七巧节”“女儿节”“乞巧节”等,是中国民间的传统节日。这个节日被赋予了“牛郎织女”的美丽爱情传说,被认为是中国最具浪漫色彩的传统节日,在当代更是产生了“中国情人节”的文化含义。
阿黎逸阳
2023/08/21
5860
七夕表白代码合集
python canvas画布
canvas = Canvas(width=525, height=300, bg='white') # 0,0 is top left corner canvas.pack(expand=YES, fill=BOTH) # increases down, right
用户5760343
2022/05/13
1.5K0
python canvas画布
休闲娱乐|手把手教你在Python中使用turtle模块实现二次元少女(一)
小假期悄然走去,选题的任务还未完成,趁着年轻活力的余热好好找找资料来梳理下。今天想要学习的Python语言中的 turtle模块 工具。
六月暴雪飞梨花
2024/04/07
8415
休闲娱乐|手把手教你在Python中使用turtle模块实现二次元少女(一)
用Python画个万圣节南瓜怪
不知从何时开始,西方的节日一个个的走进了天朝,情人节、圣诞节、感恩节、万圣节…对于当年我们那些整天只知道逃课上网的屌丝大学生来说,万圣节的熟知,自然来源于游戏了! 比如wow:
Crossin先生
2019/11/04
1.5K0
Python PIL ImageDraw 和ImageFont模块学习
http://blog.csdn.net/dou_co/article/details/17618319
bear_fish
2018/09/19
4.3K0
Python PIL ImageDraw 和ImageFont模块学习
【Python画蜘蛛侠】谁的DNA动了?
蜘蛛侠(Spider-Man)即彼得·帕克(Peter Parker),是美国漫威漫画旗下超级英雄。
阿黎逸阳
2022/11/11
5820
【Python画蜘蛛侠】谁的DNA动了?
软件测试|超好用超简单的Python GUI库——tkinter(十四)
我们知道我们可以使用pillow绘制不同形状的图形,但是我们能不能使用tkinter实现这个功能呢,当然可以,tkinter也可以实现图形的绘制,并且可以将绘制的图形添加到我们的GUI中。
霍格沃兹测试开发Muller老师
2023/06/02
1K0
SVG 快速入门
本文作者:ivweb villainthr SVG 全称是 Scalable Vector Graphics,即,矢量图。在 Web 中使用 SVG 可以解决位图放大失真的问题。首先,不要把 SVG
腾讯IVWEB团队
2017/07/11
3.1K5
SVG 快速入门
【Python从入门到精通】(二十七)更进一步的了解Pillow吧!
本文是接上一篇❤️【Python从入门到精通】(二十六)用Python的PIL库(Pillow)处理图像真的得心应手❤️ 进一步介绍Pillow库的使用,本文将重点介绍一些高级特性:比如如何利用Pillow画图形(圆形,正方形),介绍通过Pillow库给图片添加水印;同时对上一篇文章未介绍的常用知识点进行补充说明。希望对读者朋友们有所帮助。
码农飞哥
2021/10/20
9560
相关推荐
python画朵玫瑰花
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验