一:樱花树
运行效果:
完整代码如下:
import turtleimport randomfrom turtle import *from time import sleep# 画樱花的躯干(60,t)def tree(branchLen,t): sleep(0.0005) if branchLen >3: if 8<= branchLen <=12: if random.randint(0,2) == 0: t.color('snow') # 白 else: t.color('lightcoral') # 淡珊瑚色 t.pensize(branchLen / 3) elif branchLen <8: if random.randint(0,1) == 0: t.color('snow') else: t.color('lightcoral') # 淡珊瑚色 t.pensize(branchLen / 2) else: t.color('sienna') # 赭(zhě)色 t.pensize(branchLen / 10) # 6 t.forward(branchLen) a = 1.5 * random.random() t.right(20*a) b = 1.5 * random.random() tree(branchLen-10*b, t) t.left(40*a) tree(branchLen-10*b, t) t.right(20*a) t.up() t.backward(branchLen) t.down() # 掉落的花瓣def petal(m, t): for i in range(m): a = 200 - 400 * random.random() b = 10 - 20 * random.random() t.up() t.forward(b) t.left(90) t.forward(a) t.down() t.color('lightcoral') # 淡珊瑚色 t.circle(1) t.up() t.backward(a) t.right(90) t.backward(b) def main(): # 绘图区域 t = turtle.Turtle() # 画布大小 w = turtle.Screen() t.hideturtle() # 隐藏画笔 getscreen().tracer(1,0) w.screensize(bg='wheat') t.left(90) t.up() t.backward(150) t.down() t.color('sienna') # 画樱花的躯干 tree(60,t) # 掉落的花瓣 petal(200, t) w.exitonclick() main()
二:呆萌小鸭子
运行效果:
完整代码如下:
from turtle import * #扁嘴pensize(2) pu()goto(-100,100)#上嘴最高顶点seth(-50)pd()color('#6C3100','#FADD77')begin_fill()fd(16)vertex_right = pos()#嘴最右顶点rt(50)fd(12)vertex_down = pos()#下嘴最低顶点rt(80)fd(30)circle(-3,200)vertex_left = pos()#嘴最左顶点goto(-100,100)end_fill()goto(vertex_left)#回到最左顶点circle(-3,-200)#扁嘴goto(vertex_right) #身体#头颈背尾曲线color('#B6A88E')pu()goto(-100,100)pd() seth(80)circle(-36,160)fd(25)circle(115,20)circle(60,55)circle(-200,20)circle(110,20)color('#7D6A4C')circle(40,40)color('#B6A88E')seth(-100)circle(-180,30)circle(-20,50) #右鸭腿circle(20,70)color('#736856')circle(-12,120)leg_pos1 = pos()#定位左腿位置fd(25) #前胸肚曲线pu()goto(vertex_down)pd()seth(-10)color('#B9AD9D')circle(-40,50)circle(-80,48)color('#736856')circle(250,5)circle(50,75)color('#B9AD9D')circle(220,28) #左鸭腿pu()seth(175)fd(40)pd()seth(-120)fd(8)circle(-10,120)leg_pos2 = pos()#定位右腿位置fd(15) #眼睛color('black')#左眼pu()goto(vertex_down - (1,-29))pd()dot(4,'black')#右眼pu()goto(vertex_down + (23,20))pd()dot(4,'black') #翅膀color('#BCB2A6')pu()goto(vertex_down - (-75,130))seth(130)pd()circle(-25,130)circle(-100,30)fd(85)point = pos()rt(137)fd(52)circle(-100,58) pu()goto(point)lt(30)pd()fd(60) pu()goto(point)pd()lt(10)fd(70)#腿部#左腿def leg(pos0):#鸭腿绘制函数 pensize(8) color('#ECC578') pu() goto(pos0) seth(0) fd(7) seth(-90) fd(8.5) pd() fd(20)#腿长 leg(leg_pos1)leg(leg_pos2) #小红靴——函数def boot(pos0): pensize(2) color('#B4070B','#FBA06B') pu() goto(pos0)#靴子右上顶点 pd() begin_fill() seth(140) circle(25,80) seth(-80) fd(35) circle(-2,60)#靴低 fd(20) circle(4,180) seth(5) fd(30) circle(2,60) goto(pos0)#右侧线条 end_fill() boot(leg_pos1-(-20,30))boot(leg_pos2-(-20,30)) #小雨滴color('#77DDFF','#D8E8E5')fd_ls = [200,140,250,240,230,220,180,250]lt_ls = [30,60,60,100,125,170,200,330]for i in range(8): pu() home() lt(lt_ls[i]) fd(fd_ls[i]) pd() seth(-78) fd(15) begin_fill() circle(-3,200) end_fill() fd(15) #文字pu()goto(vertex_left)seth(180)fd(150)seth(-90)fd(300)color('black')write('呆萌小鸭子',font=("Arial",15,"normal")) hideturtle()done()
三:计算器
运行效果:
完整代码如下:
import tkinter as tkclass Calc(tk.Tk): """计算器窗体类""" def __init__(self): """初始化实例""" tk.Tk.__init__(self) self.title("计算器") self.memory = 0 # 暂存数值 self.create() def create(self): """创建界面""" btn_list = ["C", "M->", "->M", "/", "7", "8", "9", "*", "4", "5", "6", "-", "1", "2", "3", "+", "+/-", "0", ".", "="] r = 1 c = 0 for b in btn_list: self.button = tk.Button(self, text=b, width=5, command=(lambda x=b: self.click(x))) self.button.grid(row=r, column=c, padx=3, pady=6) c += 1 if c > 3: c = 0 r += 1 self.entry = tk.Entry(self, width=24, borderwidth=2, bg="yellow", font=("Consolas", 12)) self.entry.grid(row=0, column=0, columnspan=4, padx=8, pady=6) def click(self, key): """响应按钮""" if key == "=": # 输出结果 result = eval(self.entry.get()) self.entry.insert(tk.END, " = " + str(result)) elif key == "C": # 清空输入框 self.entry.delete(0, tk.END) elif key == "->M": # 存入数值 self.memory = self.entry.get() if "=" in self.memory: ix = self.memory.find("=") self.memory = self.memory[ix + 2:] self.title("M=" + self.memory) elif key == "M->": # 取出数值 if self.memory: self.entry.insert(tk.END, self.memory) elif key == "+/-": # 正负翻转 if "=" in self.entry.get(): self.entry.delete(0, tk.END) elif self.entry.get()[0] == "-": self.entry.delete(0) else: self.entry.insert(0, "-") else: # 其他键 if "=" in self.entry.get(): self.entry.delete(0, tk.END) self.entry.insert(tk.END, key)if __name__ == "__main__": Calc().mainloop()
四:皮卡丘
运行效果:
完整代码如下:
from turtle import *'''绘制皮卡丘头部'''def face(x,y): """画脸""" begin_fill() penup() # 将海龟移动到指定的坐标 goto(x, y) pendown() # 设置海龟的方向 setheading(40) circle(-150, 69) fillcolor("#FBD624") # 将海龟移动到指定的坐标 penup() goto(53.14, 113.29) pendown() setheading(300) circle(-150, 30) setheading(295) circle(-140, 20) print(position()) forward(5) setheading(260) circle(-80, 70) print(position()) penup() goto(-74.43,-79.09) pendown() penup() # 将海龟移动到指定的坐标 goto(-144,103) pendown() setheading(242) circle(110, 35) right(10) forward(10) setheading(250) circle(80, 115) print(position()) penup() goto(-74.43,-79.09) pendown() setheading(10) penup() goto(-144, 103) pendown() penup() goto(x, y) pendown() end_fill() # 下巴 penup() goto(-50, -82.09) pendown() pencolor("#DDA120") fillcolor("#DDA120") begin_fill() setheading(-12) circle(120, 25) setheading(-145) forward(30) setheading(180) circle(-20, 20) setheading(143) forward(30) end_fill()def eye(): """画眼睛""" # 左眼 color("black","black") penup() goto(-110, 27) pendown() begin_fill() setheading(0) circle(24) end_fill() # 左眼仁 color("white", "white") penup() goto(-105, 51) pendown() begin_fill() setheading(0) circle(10) end_fill() # 右眼 color("black", "black") penup() goto(25, 40) pendown() begin_fill() setheading(0) circle(24) end_fill() # 右眼仁 color("white", "white") penup() goto(17, 62) pendown() begin_fill() setheading(0) circle(10) end_fill()def cheek(): """画脸颊""" # 右边 color("#9E4406", "#FE2C21") penup() goto(-130, -50) pendown() begin_fill() setheading(0) circle(27) end_fill() # 左边 color("#9E4406", "#FE2C21") penup() goto(53, -20) pendown() begin_fill() setheading(0) circle(27) end_fill()def nose(): """画鼻子""" color("black", "black") penup() goto(-40, 38) pendown() begin_fill() circle(7,steps = 3) end_fill()def mouth(): """画嘴""" color("black", "#F35590") # 嘴唇 penup() goto(-10, 22) pendown() begin_fill() setheading(260) forward(60) circle(-11, 150) forward(55) print(position()) penup() goto(-38.46, 21.97) pendown() end_fill() # 舌头 color("#6A070D", "#6A070D") begin_fill() penup() goto(-10.00, 22.00) pendown() penup() goto(-14.29, -1.7) pendown() penup() goto(-52, -5) pendown() penup() goto(-60.40, 12.74) pendown() penup() goto(-38.46, 21.97) pendown() penup() goto(-10.00, 22.00) pendown() end_fill() color("black","#FFD624") penup() goto(-78, 15) pendown() begin_fill() setheading(-25) for i in range(2): setheading(-25) circle(35, 70) end_fill() color("#AB1945", "#AB1945") penup() goto(-52, -5) pendown() begin_fill() setheading(40) circle(-33, 70) goto(-16,-1.7) penup() goto(-18,-17) pendown() setheading(155) circle(25, 70) end_fill()def ear(): """画耳朵""" # 左耳 color("black","#FFD624") penup() goto(-145, 93) pendown() begin_fill() setheading(165) circle(-248,50) right(120) circle(-248,50) end_fill() color("black", "black") penup() goto(-240, 143) pendown() begin_fill() setheading(107) circle(-170, 25) left(80) circle(229, 15) left(120) circle(300, 15) end_fill() # 右耳 color("black", "#FFD624") penup() goto(30, 136) pendown() begin_fill() setheading(64) circle(-248, 50) right(120) circle(-248, 50) end_fill() color("black", "black") penup() goto(160, 200) pendown() begin_fill() setheading(52) circle(170, 25) left(116) circle(229, 15) left(71) circle(-300, 15) end_fill()def setting(): """设置参数""" pensize(2) # 隐藏海龟 hideturtle() speed(10)def main(): """主函数""" setting() face(-132,115) eye() cheek() nose() mouth() ear() done()if __name__ == '__main__': main()
五:表白专用
运行效果:
完整代码如下:
import turtleimport time# 清屏函数def clear_all(): turtle.penup() turtle.goto(0, 0) turtle.color('white') turtle.pensize(800) turtle.pendown() turtle.setheading(0) turtle.fd(300) turtle.bk(600) # 重定位海龟的位置def go_to(x, y, state): turtle.pendown() if state else turtle.penup() turtle.goto(x, y)# 画线# state为真时海龟回到原点,为假时不回到原来的出发点def draw_line(length, angle, state): turtle.pensize(1) turtle.pendown() turtle.setheading(angle) turtle.fd(length) turtle.bk(length) if state else turtle.penup() turtle.penup()# 画箭羽def draw_feather(size): angle = 30 # 箭的倾角 feather_num = size//6 # 羽毛的数量 feather_length = size // 3 # 羽毛的长度 feather_gap = size//10 # 羽毛的间隔 for i in range(feather_num): draw_line(feather_gap, angle+180, False) # 箭柄,不折返 draw_line(feather_length, angle + 145, True) # 羽翼,要折返 draw_line(feather_length, angle + 145, False) draw_line(feather_num*feather_gap, angle, False) draw_line(feather_length, angle + 145 + 180, False) for i in range(feather_num): draw_line(feather_gap, angle+180, False) # 箭柄,不折返 draw_line(feather_length, angle - 145, True) # 羽翼,要折返 draw_line(feather_length, angle - 145, False) draw_line(feather_num*feather_gap, angle, False) draw_line(feather_length, angle - 145 + 180, False) # 画爱心def draw_heart(size): turtle.color('red', 'pink') turtle.pensize(2) turtle.pendown() turtle.setheading(150) turtle.begin_fill() turtle.fd(size) turtle.circle(size * -3.745, 45) turtle.circle(size * -1.431, 165) turtle.left(120) turtle.circle(size * -1.431, 165) turtle.circle(size * -3.745, 45) turtle.fd(size) turtle.end_fill()# 画箭def draw_arrow(size): angle = 30 turtle.color('black') draw_feather(size) turtle.pensize(4) turtle.setheading(angle) turtle.pendown() turtle.fd(size*2) # 一箭穿心# 箭的头没有画出来,而是用海龟来代替def arrow_heart(x, y, size): go_to(x, y, False) draw_heart(size*1.15) turtle.setheading(-150) turtle.penup() turtle.fd(size*2.2) draw_heart(size) turtle.penup() turtle.setheading(150) turtle.fd(size * 2.2) draw_arrow(size)# 画出发射爱心的小人def draw_people(x, y): turtle.penup() turtle.goto(x, y) turtle.pendown() turtle.pensize(2) turtle.color('black') turtle.setheading(0) turtle.circle(60, 360) turtle.penup() turtle.setheading(90) turtle.fd(75) turtle.setheading(180) turtle.fd(20) turtle.pensize(4) turtle.pendown() turtle.circle(2, 360) turtle.setheading(0) turtle.penup() turtle.fd(40) turtle.pensize(4) turtle.pendown() turtle.circle(-2, 360) turtle.penup() turtle.goto(x, y) turtle.setheading(-90) turtle.pendown() turtle.fd(20) turtle.setheading(0) turtle.fd(35) turtle.setheading(60) turtle.fd(10) turtle.penup() turtle.goto(x, y) turtle.setheading(-90) turtle.pendown() turtle.fd(40) turtle.setheading(0) turtle.fd(35) turtle.setheading(-60) turtle.fd(10) turtle.penup() turtle.goto(x, y) turtle.setheading(-90) turtle.pendown() turtle.fd(60) turtle.setheading(-135) turtle.fd(60) turtle.bk(60) turtle.setheading(-45) turtle.fd(30) turtle.setheading(-135) turtle.fd(35) turtle.penup()# 第一个画面,显示文字def page0(): turtle.penup() turtle.goto(-350, 0) turtle.color('black') turtle.write('专属于我们的什么节', font=('宋体', 60, 'normal')) #这里的字大家自己替换 time.sleep(3) # 第二个画面,显示发射爱心的小人def page1(): turtle.speed(10) draw_people(-250, 20) turtle.penup() turtle.goto(-150, -30) draw_heart(14) turtle.penup() turtle.goto(-20, -60) draw_heart(25) turtle.penup() turtle.goto(250, -100) draw_heart(45) turtle.hideturtle() time.sleep(3) # 最后一个画面,一箭穿心def page2(): turtle.speed(1) turtle.penup() turtle.goto(-200, -200) turtle.color('blue') turtle.pendown() turtle.write('温轻舟 温轻舟', font=('wisdom', 25, 'normal')) #这里的字大家自己替换 turtle.penup() turtle.goto(0, -180) draw_heart(10) arrow_heart(20, -60, 51) turtle.showturtle() def main(): turtle.setup(900, 500) page0() clear_all() page1() clear_all() page2() turtle.done()main()