移动汉字贺卡

移动汉字贺卡

李兴球Python海龟移动汉字贺卡
李兴球Python海龟移动汉字贺卡

李兴球Python海龟移动汉字贺卡

"""
   移动汉字贺卡.py
"""
import os
import time
from random import randint
from turtle import RawTurtle,Shape,Turtle,Screen
from winsound import PlaySound,SND_ASYNC,SND_LOOP
from PIL import Image,ImageFont,ImageDraw,ImageTk

def txt2image(txt,filename=None,fontfile="msyh.ttf",fontsize=18,color=(25,0,255,255)):
    """
        文本转图像实用小程序,只支持单行文本,默认为微软雅黑字体,
        txt:文本
        filename:要写入的文件名,如果为空则不写入,并且返回图形对象
        fontfile:ttf字体文件
        fontsize:字体大小
        color:颜色,通过写alpha值可支持半透明图形。        
    """    
    pass                                 # 这里省略一些代码
    
def bounce_on_edge(self):
    """碰到边缘就反弹的方法"""
    sw = self.screen.window_width()
    sh = self.screen.window_height()
    x = self.xcor()
    y = self.ycor()    
    if x > sw/2 or x < -sw/2:             # 到了最右边或最左边
        self.seth(180 - self.heading())   # 改变方向
    elif y  > sh/2 or y < -sh/2:          # 到了最上边或最下边 
        self.seth( -self.heading())

pass                                      # 这里省略一些代码

screen.title('移动汉字贺卡by李兴球,网址:www.lixingqiu.com')

zi = screen.textinput('输入框','请输入贺词')
if zi==None or zi=="": zi =  '风火轮编程祝本群所有人员身体健康'
shapes = [Photo(txt2image(z,fontsize=28,color='blue')) for z in zi]

def clickevent(x,y):
    if shapes:
        sp = shapes.pop(0)
        c = Shape('image',sp)         # 新建造型
        screen.addshape(str(c),c)     # 把造型添加到造型字典
        z = Turtle(shape=str(c),visible=False)        
        z.penup()
        z.speed(0)       
        z.seth(randint(180,360))
        z.goto(x,y)
        z.stamp()
        z.showturtle()
    else:
        PlaySound('卓依婷-迎春花.wav',SND_LOOP|SND_ASYNC)
        screen.onclick(None)
        screen.bgpic('鱼.png')
        g = Turtle(visible=False)
        g.penup()

        g.sety(-20)
        g.color('magenta')
        s = 'Python值得你拥有'
        g.write(s,align='center',font=('',24,'bold'))

        counter = 0
        while True:
            for z in screen.turtles():
                z.fd(0.1)
                z.bounce_on_edge()
            counter += 1
            if counter == 3000:
                g.clear()
                g.setx(0)
                g.sety(-20)
                g.color('red')
                s = '本程序由Python海龟模块制作'
                g.write(s,align='center',font=('',16,'bold'))
                
                g.sety(-55)
                g.color('gray')
                s = '需要本程序源码的请加微信scratch8'
                g.write(s,align='center',font=('',18,'underline'))                
    
screen.onclick(clickevent)
screen.mainloop()

另外一个版本:

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

李兴球

李兴球的博客是Python创意编程原创博客