应我家领导要求编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表示没有乌龟爬行过程(绘制过程)动画,直接显示结果图形
领取专属 10元无门槛券
私享最新 技术干货