【python】利用python的tkinter-canvas函数绘制哆啦A梦过程详解(附源码)

1 引 言

绘制哆啦A梦的过程,其实是对哆啦A梦进行拆解的过程,得先构思出他的头部、眼睛、鼻子、嘴巴、胡须、身体、铃铛、口袋、手以及脚等(如下图所示),才能进行下一步的绘画工作。心中有丘壑,方能水到渠成。

本案例通过python自带的集成开发环境IDLE进行编写并运行,主要应用了python的tkinter模块的canvas组件。

Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包的接口;

Canvas(画布) 是一个通用的组件,通常用于显示和编辑图形。你可以用它来绘制线段、圆形、多边形,甚至是绘制其它组件。

下面就来详细说明哆啦A梦的绘画过程吧!!!Let's go......

2 绘制过程

2.1 绘制头部

w.create_oval(100,40,300,240,fill = 'blue')
w.create_oval(115,70,285,240,fill = 'white')

2.2 绘制研究

w.create_oval(165,50,200,90,fill = 'white')
w.create_oval(200,50,235,90,fill = 'white')
w.create_oval(185,62,195,77,fill = 'black')
w.create_oval(205,62,215,77,fill = 'black')
w.create_oval(189,65,192,75,fill = 'white')
w.create_oval(208,65,211,75,fill = 'white')

2.3 绘制鼻子

w.create_oval(193,83,207,97,fill = 'red')

2.4 绘制嘴巴

w.create_line(200,97,200,177)
w.create_arc(130,67,270,177,start=-45,extent = -90,style = ARC)

2.5 绘制胡须

w.create_line(180,127,130,127)
w.create_line(220,127,270,127)

w.create_line(180,107,140,97)
w.create_line(220,107,260,97)

w.create_line(180,147,140,157)
w.create_line(220,147,260,157)
 

2.6 绘制身体

w.create_rectangle(120,200,280,350,fill = 'blue')
w.create_oval(130,180,270,320,fill='white')

w.create_arc(130,180,270,320,outline = 'white',start=45,extent = 90,style = ARC)

2.7 绘制铃铛

w.create_rectangle(125,195,275,205,fill = 'red')
w.create_arc(118,195,132,205,fill = 'red',start = 90,extent = 180)
w.create_arc(268,195,282,205,fill = 'red',start = 90,extent = -180)
w.create_line(125,195,125,205,fill = 'red')
w.create_line(275,195,275,205,fill = 'red')

w.create_oval(188,200,212,224,fill='yellow')
w.create_line(188,212,212,212)
w.create_line(190,209,211,209)
w.create_oval(197,215,203,221,fill = 'red')
w.create_line(200,221,200,224)

2.8 绘制口袋

w.create_arc(155,205,245,295,style = PIESLICE,start = 0,extent = -180)

2.9 绘制手脚

#脚
w.create_arc(180,330,220,370,style = PIESLICE,start = 0,extent = 180,fill = 'white',outline = 'white')
w.create_oval(100,332,190,368,fill = 'white')
w.create_oval(210,332,300,368,fill = 'white')

#手
points1 = [
    (120,205),
    (120,265),
    (90,280),
    (80,260)
]

w.create_polygon(points1,fill = 'blue',outline = 'black')
w.create_oval(55,260,95,300,fill = 'white')

points2 = [
    (280,205),
    (280,265),
    (310,280),
    (320,260)
]
w.create_polygon(points2,fill = 'blue',outline = 'black')
w.create_oval(345,260,305,300,fill = 'white')

3 运行结果

4 完整源码

from tkinter import *

root = Tk()
root.geometry('410x410+500+200')
root.title('***哆啦A梦***')

#绘制幕布
w = Canvas(root,width = 400,height = 400,bg = 'white')
w.pack()

#绘制坐标系
w.create_line(0,200,400,200,fill = 'green',dash = (4,4))
w.create_line(200,0,200,400,fill = 'green',dash = (4,4))

#绘制头部
w.create_oval(100,40,300,240,fill = 'blue')
w.create_oval(115,70,285,240,fill = 'white')

#绘制眼睛
w.create_oval(165,50,200,90,fill = 'white')
w.create_oval(200,50,235,90,fill = 'white')
w.create_oval(185,62,195,77,fill = 'black')
w.create_oval(205,62,215,77,fill = 'black')
w.create_oval(189,65,192,75,fill = 'white')
w.create_oval(208,65,211,75,fill = 'white')

#绘制鼻子
w.create_oval(193,83,207,97,fill = 'red')

#绘制嘴巴
w.create_line(200,97,200,177)
w.create_arc(130,67,270,177,start=-45,extent = -90,style = ARC)

#绘制胡须
w.create_line(180,127,130,127)
w.create_line(220,127,270,127)

w.create_line(180,107,140,97)
w.create_line(220,107,260,97)

w.create_line(180,147,140,157)
w.create_line(220,147,260,157)

#绘制身体
w.create_rectangle(120,200,280,350,fill = 'blue')
w.create_oval(130,180,270,320,fill='white')

w.create_arc(130,180,270,320,outline = 'white',start=45,extent = 90,style = ARC)

#绘制铃铛
w.create_rectangle(125,195,275,205,fill = 'red')
w.create_arc(118,195,132,205,fill = 'red',start = 90,extent = 180)
w.create_arc(268,195,282,205,fill = 'red',start = 90,extent = -180)
w.create_line(125,195,125,205,fill = 'red')
w.create_line(275,195,275,205,fill = 'red')

w.create_oval(188,200,212,224,fill='yellow')
w.create_line(188,212,212,212)
w.create_line(190,209,211,209)
w.create_oval(197,215,203,221,fill = 'red')
w.create_line(200,221,200,224)


#绘制口袋

w.create_arc(155,205,245,295,style = PIESLICE,start = 0,extent = -180)

#绘制手脚
  #脚
w.create_arc(180,330,220,370,style = PIESLICE,start = 0,extent = 180,fill = 'white',outline = 'white')
w.create_oval(100,332,190,368,fill = 'white')
w.create_oval(210,332,300,368,fill = 'white')

  #手
points1 = [
    (120,205),
    (120,265),
    (90,280),
    (80,260)
]

w.create_polygon(points1,fill = 'blue',outline = 'black')
w.create_oval(55,260,95,300,fill = 'white')

points2 = [
    (280,205),
    (280,265),
    (310,280),
    (320,260)
]
w.create_polygon(points2,fill = 'blue',outline = 'black')
w.create_oval(345,260,305,300,fill = 'white')

mainloop()

猜你喜欢

转载自blog.csdn.net/u010521062/article/details/114003699