Python心形绘制的小改进:turtle模块

应我家领导要求编word文档处理脚本时,恰逢即将迎来领导生日,就想着在脚本上来点花头,看到知乎网友编写的turtle画爱心脚本(sorry翻了半天找不到链接了),实测发现画出来有点不够对称,因此,对脚本进行了修改(确保了爱心完全对称)。博领导开心一笑足矣,脚本拿走不写~

Python学习资料或者需要代码、视频加这个群吧,516加上107还有834 都在这里了

总之就是五一六一零七八三四

按惯例本来首先要介绍下turtle模块,考虑到学不学模块无所谓,最重要的是领导开心,先对脚本中影响你家领导的关键位置点出来。

设置图像窗口的标题,改成你家的风格吧,不要让领导觉得是借来的程序

turtle.title('领导专用程序')

写上要对领导说的表白(rou ma)话儿,一个命令是一行字,字太多就把字号改小点

lv.write("喵领导",font=(u"方正舒体",36,"normal"),align="center")

lv.write("生日快乐!",font=(u"方正舒体",48,"normal"),align="center")

lv.write("点我点我快点我",font=(u"华文琥珀",26,"bold"),align="right")

光画个心就可以了吗,领导有这么好搞定吗!礼物该送送,烛光晚餐该请请。比如礼物,可以把礼物的页面连接到"点我点我快点我"上,打开页面的功能通过main()函数实现(webbrowser模块很简单的),具体怎么搞不知道就问度娘

def main():

pass

上源代码:

#! usr/bin/eny python import turtle import datetime #生日快乐 def love(): def func(x, y): main() turtle.title('领导专用程序') lv=turtle.Turtle() lv.hideturtle() lv.getscreen().bgcolor('light blue') lv.color('yellow','red') lv.pensize(1) lv.speed(1) lv.up() lv.goto(0,-150) #开始画爱心 lv.down() lv.begin_fill() lv.goto(0, -150) lv.goto(-175.12, -8.59) lv.left(140) pos = [] for i in range(19): lv.right(10) lv.forward(20) pos.append((-lv.pos()[0], lv.pos()[1])) for item in pos[::-1]: lv.goto(item) lv.goto(175.12, -8.59) lv.goto(0, -150) lv.left(50) lv.end_fill() #写字 lv.up() lv.goto(0, 80) lv.down() lv.write("喵领导",font=(u"方正舒体",36,"normal"),align="center") lv.up() lv.goto(0, 0) lv.down() lv.write("生日快乐!",font=(u"方正舒体",48,"normal"),align="center") lv.up() lv.goto(100, -210) lv.down() lv.write("点我点我快点我",font=(u"华文琥珀",26,"bold"),align="right") lv.up() lv.goto(160, -190) lv.resizemode('user') lv.shapesize(4, 4, 10)#调整小乌龟大小,以便覆盖“点我”文字 lv.color('red', 'red') lv.onclick(func) lv.showturtle() def main(): pass if __name__ == '__main__': if datetime.date.today() == datetime.date(YYYY, MM, DD): #YYYY年,MM月,DD日 love() else: main()

模块还是要介绍下,就放最后吧,真(mei)爱(you)学(dui)习(xiang)的学习控们,继续往下看。

turtle是python的一个非常初级的绘图模块(功能可能还不如windows自带画图?),基本就是通过“小乌龟”(光标箭头)在窗口中移动,绘制出曲线,同时配以填充颜色,生成可视化效果。

绘图窗口

lv = turtle.Turtle() #生成绘图窗口lv

turtle.Title('领导专用程序') #设置绘图窗口标题为《领导专用程序》

lv.getscreen().bgcolor('red') #设置绘图窗口lv的背景色

光标位置(小乌龟)

lv.hideturtle() #小乌龟隐藏不显示

lv.showturtle() #显示小乌龟

lv.position() #返回小乌龟当前所在的坐标

lv.heading() #返回小乌龟脑袋朝向

lv.left(90) #小乌龟脑袋左转90度

lv.right(90) #小乌龟脑袋右转90度

画线(移动)

lv.color('yellow','red') #设置画线的颜色(前者)、填充的颜色(后者)

lv.up() #小乌龟飞起来,这之后的小乌龟只移动不画线

lv.down() #小乌龟地上爬,这之后的小乌龟边移动边画线

lv.goto(0,-150) #小乌龟沿直线移动(或画线)到绝对坐标(0,-150)

lv.forward(100) #小乌龟向前(脑袋方向)爬100距离(或画线)

lv.backward(100) #小乌龟倒车(背对脑袋)100距离(或画线)

lv.circle(100, extent=None, steps=None) #小乌龟以其左侧(脑袋方向逆时针转90度)100距离处的点为圆心,画圆(或移动)。如果画弧线,则extent给定弧线的角度。如果画多边形,则steps给定整圆几条边

lv.write("喵领导",font=(u"方正舒体",36,"normal"),align="center") #写字。font为字体设置(字体,字号,类型)。align为对齐方式

填充

lv.begin_fill() #开始填充,之后小乌龟移动时,不仅画线,而且填充

lv.end_fill() #结束填充,直到这个时候前面小乌龟移动画线的填充效果才会显示出来

鼠标操作(链接)

lv.onclick(func, btn=1) #鼠标点击则调用函数func。func一定要定义为两参数函数func(x,y),x、y分别为鼠标点击位置的坐标值。btn表示鼠标点击类型(1就是左键)

lv.onrelease(func, btn=1) #鼠标点击释放则调用函数func

lv.ondrag(func, btn=1) #鼠标摁住拖动则调用函数func

#鼠标点击的是小乌龟,所以要将小乌龟调整到方便点击的大小

lv.resizemode('user') #小乌龟大小设置为允许用户自定义

lv.shapesize(stretch_wid=4, stretch_len=4, outline=10)#调整小乌龟大小。stretch_wid、stretch_len表示小乌龟整体宽度、长度的缩放系数。outline为小乌龟轮廓线的宽度

动画效果

lv.speed(1) #设置脚本运行时,图形绘制的速度。速度1~10表示逐渐增加的速度。速度0表示没有乌龟爬行过程(绘制过程)动画,直接显示结果图形

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181027A1NI3I00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券