MENU

利用 turtle 库来画画

December 30, 2018 • Read: 5171 • python阅读设置

  • #PythonDraw.py
  • import turtle as t
  • t.setup(650, 350, 200, 200) #设置画布位置以及长宽
  • t.penup() # 画笔抬起来
  • t.fd(-250) # 画笔向前移动-250像素
  • t.pendown() # 画笔落下
  • t.pensize(25) # 设置画笔粗细
  • t.pencolor("purple") # 设置画笔颜色
  • t.seth(-40) # 画笔旋转角度
  • for i in range(4):
  • t.circle(40, 80) # circle(r,theta) 半径,角度
  • t.circle(-40, 80)
  • t.circle(40, 80/2)
  • t.fd(40)
  • t.circle(16, 180)
  • t.fd(40 * 2/3)
  • t.done() # 使画布不关闭

小猪佩奇源码

  • from turtle import *
  • def nose(x,y):#鼻子
  • penup()#提起笔
  • goto(x,y)#定位
  • pendown()#落笔,开始画
  • setheading(-30)#将乌龟的方向设置为to_angle/为数字(0-东、90-北、180-西、270-南)
  • begin_fill()#准备开始填充图形
  • a=0.4
  • for i in range(120):
  • if 0<=i<30 or 60<=i<90:
  • a=a+0.08
  • left(3) #向左转3度
  • forward(a) #向前走a的步长
  • else:
  • a=a-0.08
  • left(3)
  • forward(a)
  • end_fill()#填充完成
  • penup()
  • setheading(90)
  • forward(25)
  • setheading(0)
  • forward(10)
  • pendown()
  • pencolor(255,155,192)#画笔颜色
  • setheading(10)
  • begin_fill()
  • circle(5)
  • color(160,82,45)#返回或设置pencolor和fillcolor
  • end_fill()
  • penup()
  • setheading(0)
  • forward(20)
  • pendown()
  • pencolor(255,155,192)
  • setheading(10)
  • begin_fill()
  • circle(5)
  • color(160,82,45)
  • end_fill()
  • def head(x,y):#头
  • color((255,155,192),"pink")
  • penup()
  • goto(x,y)
  • setheading(0)
  • pendown()
  • begin_fill()
  • setheading(180)
  • circle(300,-30)
  • circle(100,-60)
  • circle(80,-100)
  • circle(150,-20)
  • circle(60,-95)
  • setheading(161)
  • circle(-300,15)
  • penup()
  • goto(-100,100)
  • pendown()
  • setheading(-30)
  • a=0.4
  • for i in range(60):
  • if 0<=i<30 or 60<=i<90:
  • a=a+0.08
  • lt(3) #向左转3度
  • fd(a) #向前走a的步长
  • else:
  • a=a-0.08
  • lt(3)
  • fd(a)
  • end_fill()
  • def ears(x,y): #耳朵
  • color((255,155,192),"pink")
  • penup()
  • goto(x,y)
  • pendown()
  • begin_fill()
  • setheading(100)
  • circle(-50,50)
  • circle(-10,120)
  • circle(-50,54)
  • end_fill()
  • penup()
  • setheading(90)
  • forward(-12)
  • setheading(0)
  • forward(30)
  • pendown()
  • begin_fill()
  • setheading(100)
  • circle(-50,50)
  • circle(-10,120)
  • circle(-50,56)
  • end_fill()
  • def eyes(x,y):#眼睛
  • color((255,155,192),"white")
  • penup()
  • setheading(90)
  • forward(-20)
  • setheading(0)
  • forward(-95)
  • pendown()
  • begin_fill()
  • circle(15)
  • end_fill()
  • color("black")
  • penup()
  • setheading(90)
  • forward(12)
  • setheading(0)
  • forward(-3)
  • pendown()
  • begin_fill()
  • circle(3)
  • end_fill()
  • color((255,155,192),"white")
  • penup()
  • seth(90)
  • forward(-25)
  • seth(0)
  • forward(40)
  • pendown()
  • begin_fill()
  • circle(15)
  • end_fill()
  • color("black")
  • penup()
  • setheading(90)
  • forward(12)
  • setheading(0)
  • forward(-3)
  • pendown()
  • begin_fill()
  • circle(3)
  • end_fill()
  • def cheek(x,y):#腮
  • color((255,155,192))
  • penup()
  • goto(x,y)
  • pendown()
  • setheading(0)
  • begin_fill()
  • circle(30)
  • end_fill()
  • def mouth(x,y): #嘴
  • color(239,69,19)
  • penup()
  • goto(x,y)
  • pendown()
  • setheading(-80)
  • circle(30,40)
  • circle(40,80)
  • def body(x,y):#身体
  • color("red",(255,99,71))
  • penup()
  • goto(x,y)
  • pendown()
  • begin_fill()
  • setheading(-130)
  • circle(100,10)
  • circle(300,30)
  • setheading(0)
  • forward(230)
  • setheading(90)
  • circle(300,30)
  • circle(100,3)
  • color((255,155,192),(255,100,100))
  • setheading(-135)
  • circle(-80,63)
  • circle(-150,24)
  • end_fill()
  • def hands(x,y):#手
  • color((255,155,192))
  • penup()
  • goto(x,y)
  • pendown()
  • setheading(-160)
  • circle(300,15)
  • penup()
  • setheading(90)
  • forward(15)
  • setheading(0)
  • forward(0)
  • pendown()
  • setheading(-10)
  • circle(-20,90)
  • penup()
  • setheading(90)
  • forward(30)
  • setheading(0)
  • forward(237)
  • pendown()
  • setheading(-20)
  • circle(-300,15)
  • penup()
  • setheading(90)
  • forward(20)
  • setheading(0)
  • forward(0)
  • pendown()
  • setheading(-170)
  • circle(20,90)
  • def foot(x,y):#脚
  • pensize(10)
  • color((240,128,128))
  • penup()
  • goto(x,y)
  • pendown()
  • setheading(-90)
  • forward(40)
  • setheading(-180)
  • color("black")
  • pensize(15)
  • fd(20)
  • pensize(10)
  • color((240,128,128))
  • penup()
  • setheading(90)
  • forward(40)
  • setheading(0)
  • forward(90)
  • pendown()
  • setheading(-90)
  • forward(40)
  • setheading(-180)
  • color("black")
  • pensize(15)
  • fd(20)
  • def tail(x,y):#尾巴
  • pensize(4)
  • color((255,155,192))
  • penup()
  • goto(x,y)
  • pendown()
  • seth(0)
  • circle(70,20)
  • circle(10,330)
  • circle(70,30)
  • def setting(): #参数设置
  • pensize(4)
  • hideturtle() #使乌龟无形(隐藏)
  • colormode(255) #将其设置为1.0或255.随后 颜色三元组的r,g,b值必须在0 .. cmode范围内
  • color((255,155,192),"pink")
  • setup(840,500)
  • speed(10)
  • def main():
  • setting() #画布、画笔设置
  • nose(-100,100) #鼻子
  • head(-69,167) #头
  • ears(0,160) #耳朵
  • eyes(0,140) #眼睛
  • cheek(80,10) #腮
  • mouth(-20,30) #嘴
  • body(-32,-8) #身体
  • hands(-56,-45) #手
  • foot(2,-177) #脚
  • tail(148,-155) #尾巴
  • done()
  • if __name__ == '__main__':
  • main()

绘制日期

  • from turtle import *
  • from time import *
  • def drawGap(): #绘制数码管间隔
  • penup()
  • fd(5)
  • def drawLine(draw): #绘制单段数码管
  • drawGap()
  • pendown() if draw else penup()
  • fd(40)
  • drawGap()
  • right(90)
  • def drawDigit(digit): #根据数字绘制七段数码管
  • drawLine(True) if digit in [2,3,4,5,6,8,9] else drawLine(False)
  • drawLine(True) if digit in [0,1,3,4,5,6,7,8,9] else drawLine(False)
  • drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False)
  • drawLine(True) if digit in [0,2,6,8] else drawLine(False)
  • left(90)
  • drawLine(True) if digit in [0,4,5,6,8,9] else drawLine(False)
  • drawLine(True) if digit in [0,2,3,5,6,7,8,9] else drawLine(False)
  • drawLine(True) if digit in [0,1,2,3,4,7,8,9] else drawLine(False)
  • left(180)
  • penup() #为绘制后续数字确定位置
  • fd(20) #为绘制后续数字确定位置
  • def drawDate(date): #data为日期,格式为:'%Y-%m=%d+'
  • pencolor("red")
  • for i in date:
  • if i == "-":
  • write("年",font = ("Arial", 18, "normal"))
  • pencolor("green")
  • fd(40)
  • elif i == "=":
  • write("月",font = ("Arial", 18, "normal"))
  • pencolor("blue")
  • fd(40)
  • elif i == "+":
  • write("日", font = ("Arial", 18, "normal"))
  • else:
  • drawDigit(eval(i))
  • def main():
  • setup(800,350,200,200)
  • penup()
  • fd(-300)
  • pensize(5)
  • drawDate(strftime("%Y-%m=%d+", gmtime()))
  • hideturtle()
  • done()
  • main()

Archives Tip
QR Code for this page
Tipping QR Code