利用Python绘制心形表白脚本

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

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

按惯例本来首先要介绍下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

#生日快乐
#Python学习群548377875
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表示没有乌龟爬行过程(绘制过程)动画,直接显示结果图形

猜你喜欢

转载自blog.csdn.net/python_huohuo/article/details/81562805