七夕七夕!又是单身狗哭泣得一天,python制作表白代码,争取拐个女朋友回来!!

目录标题

      • 前言
      • 赠玫一朵,一心一意 ❀
      • 烟花一瞬,只为你灿烂
      • 520我爱你,爱意天长地久 ❤
      • 尾语

前言

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

七夕七夕!又是单身狗哭泣得一天,python制作表白代码,争取拐个女朋友回来!!_第1张图片

七夕节,又名乞巧节、女儿节,是中国的传统节日,该节日来自于牛郎与织女的传说,在农历七月初七庆祝。

在古代女子每逢七姐诞,她们都会向七姐献祭,祈求心灵手巧、获得美满姻缘。

这也就是“乞巧”这名称的来源。妇女亦会以五色细线对月迎风穿针,穿进了为之得久。

久而久之,七夕也成为了“女儿节”。

七夕节以牛郎织女的民间传说为载体,表达的是已婚男女不离不弃、白头偕老的情感,恪守的是对爱的承诺。

关于本片文章代码/素材等 点击此处跳转文末名片免费获取

接下来就给大家分享一波表白代码,希望大家在七夕获得良人~

赠玫一朵,一心一意 ❀

import turtle

import time

turtle.speed(5)

# 设置初始位置  

turtle.penup()  

turtle.left(90)  

turtle.fd(200)  

turtle.pendown()  

turtle.right(90)
# 花蕊  

turtle.fillcolor("red")  

turtle.begin_fill()  

turtle.circle(10,180)  

turtle.circle(25,110)  

turtle.left(50)  

turtle.circle(60,45)  

turtle.circle(20,170)  

turtle.right(24)  

turtle.fd(30)  

turtle.left(10)  

turtle.circle(30,110)  

turtle.fd(20)  

turtle.left(40)  

turtle.circle(90,70)  

turtle.circle(30,150)  

turtle.right(30)  

turtle.fd(15)  

turtle.circle(80,90)  

turtle.left(15)  

turtle.fd(45)  

turtle.right(165)  

turtle.fd(20)  

turtle.left(155)  

turtle.circle(150,80)  

turtle.left(50)  

turtle.circle(150,90)  

turtle.end_fill()  

   

# 花瓣1  

turtle.left(150)  

turtle.circle(-90,70)  

turtle.left(20)  

turtle.circle(75,105)  

turtle.setheading(60)  

turtle.circle(80,98)  

turtle.circle(-90,40)  

  

# 花瓣2  

turtle.left(180)  

turtle.circle(90,40)  

turtle.circle(-80,98)  

turtle.setheading(-83)  

  

# 叶子1  

turtle.fd(30)  

turtle.left(90)  

turtle.fd(25)  

turtle.left(45)  

turtle.fillcolor("green")  

turtle.begin_fill()  

turtle.circle(-80,90)  

turtle.right(90)  

turtle.circle(-80,90)  

turtle.end_fill()  

   

turtle.right(135)  

turtle.fd(60)  

turtle.left(180)  

turtle.fd(85)  

turtle.left(90)  

turtle.fd(80)  

   

# 叶子2  

turtle.right(90)  

turtle.right(45)  

turtle.fillcolor("green")  

turtle.begin_fill()  

turtle.circle(80,90)  

turtle.left(90)  

turtle.circle(80,90)  

turtle.end_fill()  

   

turtle.left(135)  

turtle.fd(60)  

turtle.left(180)  

turtle.fd(60)  

turtle.right(90)  

turtle.circle(200,60) 

七夕七夕!又是单身狗哭泣得一天,python制作表白代码,争取拐个女朋友回来!!_第2张图片

七夕七夕!又是单身狗哭泣得一天,python制作表白代码,争取拐个女朋友回来!!_第3张图片

烟花一瞬,只为你灿烂

所需素材

图片可以自由更换噢~(这点想必你还是懂得吧)

七夕七夕!又是单身狗哭泣得一天,python制作表白代码,争取拐个女朋友回来!!_第4张图片

有源码/安装包/资料等 点击此处跳转文末名片免费获取

# -*- coding: UTF-8 -*-
'''
主题表白:漫天烟花
'''

import random
import pygame as py
import tkinter as tk
from time import time, sleep
from tkinter import filedialog
from PIL import Image, ImageTk
from math import sin, cos, radians
from random import choice, uniform, randint
#导入库


def randomcolor():
    #生成随机颜色
    colArr = ['1','2','3','4','5','6','7','8','9','A','B','C','D','E','F']
    color = ""
    for i in range(6):
        color += colArr[random.randint(0,14)]
    return "#"+color

GRAVITY = 0.06
#重力变量
colors = ['red', 'blue', 'yellow', 'white', 'green', 'orange', 'purple', 'seagreen','indigo', 'cornflowerblue', 'pink']
#颜色列表
 
 
'''
Generic class for particles
particles are emitted almost randomly on the sky, forming a round of circle (a star) before falling and getting removed
from canvas
Attributes(属性):
    - id: 粒子的id
    - x, y: 粒子的坐标
    - vx, vy: 粒子在对应坐标的变化速度
    - total:一颗烟花里的粒子总数
    - age: 粒子在画布上停留的时间
    - color: 自我移植
    - cv: 画布
    - lifespan: 粒子在画布上停留的时间
'''
 
class part:
#为每一个烟花绽放出来的粒子单独构建一个类的对象 ,每个粒子都会有一些重要的属性,决定它的外观(大小、颜色)、移动速度等
    def __init__(self, cv, idx, total, explosion_speed, x=0., y=0., vx = 0., vy = 0., size=3., color = 'red', lifespan = 2, **kwargs):
        self.id = idx
        #每个烟花的特定标识符
        self.x = x
        #烟花绽放x轴
        self.y = y
        #烟花绽放y轴
        self.initial_speed = explosion_speed
        #粒子初始速度
        self.vx = vx
        #粒子运动x轴速度
        self.vy = vy
        #粒子运动y轴速度
        self.total = total
        #绽放粒子数
        self.age = 0
        #粒子已停留时间
        self.color = color
        #粒子颜色
        self.cv = cv
        #画布
        self.cid = self.cv.create_oval(x - size, y - size, x + size,y + size, fill=self.color, outline='white',width=0.01)
        #指定一个限定矩形(Tkinter 会自动在这个矩形内绘制一个椭圆)
        self.lifespan = lifespan
        #粒子在画布上停留的时间
 
 
    def update(self, dt): 
        self.age += dt
        #更新粒子停留时间
        if self.alive() and self.expand():
            #如果粒子既存活又处于扩张阶段
            move_x = cos(radians(self.id*360/self.total))*self.initial_speed
            #粒子x轴继续膨胀
            move_y = sin(radians(self.id*360/self.total))*self.initial_speed
            #粒子y轴继续膨胀
            self.cv.move(self.cid, move_x, move_y)
            #根据id把画布上的粒子移动x和y个距离
            self.vx = move_x/(float(dt)*1000)
            #粒子x轴的速度
       
        
        elif self.alive():
            columnFont = ('华文行楷',14)
            #如果粒子仅存活不扩张(只是停留时间足够,说明膨胀到最大了),则自由坠落
            self.cv.create_text(250, 100, text='新',tag="write_tag", fill=choice(colors),font = columnFont) #字体
            self.cv.create_text(300, 100,  text='年',tag="write_tag", fill=choice(colors),font = columnFont)
            self.cv.create_text(350, 100, text='快',tag="write_tag", fill=choice(colors),font = columnFont)
            self.cv.create_text(400, 100,  text='乐',tag="write_tag", fill=choice(colors),font = columnFont)
            #删除文字标签
            move_x = cos(radians(self.id*360/self.total))
            #x轴的移动位移
            # we technically don't need to update x, y because move will do the job
            self.cv.move(self.cid, self.vx + move_x, self.vy+GRAVITY*dt)
            self.vy += GRAVITY*dt
            #更新y轴
 

        elif self.cid is not None:
            #如果粒子生命周期已过,则将其移除
            cv.delete(self.cid)
            #在画布上移除该粒子对象
            self.cv.delete("write_tag")
            #同时移除字体
            self.cid = None
 
 
 
    def expand (self):
        #定义膨胀效果时间帧
        return self.age <= 1.2
        #判断膨胀时间是否小于1.2秒
 
 
 
    def alive(self):
        #判断粒子是否仍在生命周期内
        return self.age <= self.lifespan
        #判断已停留时间是否小于应该停留时间
 
 
'''
Firework simulation loop:
Recursively call to repeatedly emit new fireworks on canvas
a list of list (list of stars, each of which is a list of particles)
is created and drawn on canvas at every call, 
via update protocol inside each 'part' object 
'''
 
def simulate(cv):
 
    t = time()
    #返回自1970年后经过的浮点秒数,精确到小数点后7位
    explode_points = []
    #爆炸点列表,烟花列表
    wait_time = randint(10,100)
    #等待时间为10到100之间整数
    numb_explode = randint(8,20)
    #爆炸烟花个数时6到10之间的随机整数
    # create list of list of all particles in all simultaneous explosion
    for point in range(numb_explode):
        #为所有模拟烟花绽放的全部粒子创建一列列表
        if point<=4:
            objects = []
            #每个点的爆炸粒子列表粒子列表
            x_cordi = 250 + point*50
            #每个爆炸点的x轴
            y_cordi = 100
            #每个爆炸点的y轴
            speed = uniform (0.5, 2.5)
            #每个爆炸点的速度
            size = uniform (0.5,3)
            #每个爆炸点的大小
            color = choice(colors)
            #每个爆炸点的颜色
            explosion_speed = uniform(0.6, 3)
            #爆炸的绽放速度
            total_particles = randint(10,60)
            #烟花的总粒子数
            for i in range(1,total_particles):
            #同一个烟花爆炸出来的粒子大小、速度、坐标都是相同的
                r = part(cv, idx = i, total = total_particles, explosion_speed = explosion_speed, x = x_cordi, y = y_cordi, vx = speed, vy = speed, color=color, size = size, lifespan = uniform(0.6,1.75))
                #把上述参数代入part函数,但是每个粒子的生存时间是自己独立的
                objects.append(r)
                #把r添加进粒子列表
            explode_points.append(objects)
            #把粒子列表添加进烟花列表
        else: 
            objects = []
            #每个点的爆炸粒子列表粒子列表
            x_cordi = randint(50,550)
            #每个爆炸点的x轴
            y_cordi = randint(50, 250)
            #每个爆炸点的y轴
            speed = uniform (0.5, 2.5)
            #每个爆炸点的速度
            size = uniform (0.5,3)
            #每个爆炸点的大小
            color = choice(colors)
            #每个爆炸点的颜色
            explosion_speed = uniform(0.3, 2)
            #爆炸的绽放速度
            total_particles = randint(10,50)
            #烟花的总粒子数
            for i in range(1,total_particles):
            #同一个烟花爆炸出来的粒子大小、速度、坐标都是相同的
                r = part(cv, idx = i, total = total_particles, explosion_speed = explosion_speed, x = x_cordi, y = y_cordi, vx = speed, vy = speed, color=color, size = size, lifespan = uniform(0.6,1.75))
                #把上述参数代入part函数,但是每个粒子的生存时间是自己独立的
                objects.append(r)
                #把r添加进粒子列表
            explode_points.append(objects)
            #把粒子列表添加进烟花列表

 
    total_time = .0
    #初始化总时间
    # keeps undate within a timeframe of 1.8 second 
    while total_time < 2:
    #当总时间小于1.8秒时运行该循环
        sleep(0.03)
        #让画面暂停0.01秒
        tnew = time()
        #刷新时间
        t, dt = tnew, tnew - t
        #时间等于新时间,和上次时间间隔为tnew-t
        for point in explode_points:
        #遍历烟花列表
            for item in point:
            #遍历烟花里的粒子列表
                item.update(dt)
                #粒子更新时间
        cv.update()
        #刷新画布
        total_time += dt
        #为while循环增加时间
 
    root.after(wait_time, simulate, cv)
    #将组件置于其他组件之后,放在最顶层,覆盖下面的,递归调用自己,形成新一轮的爆炸

def close(*ignore):
    #打开模拟循环并关闭窗口
    """Stops simulation loop and closes the window."""
    global root
    root.quit()
 
    
if __name__ == '__main__': 
    root = tk.Tk() 
    root.title('新年快乐~~')  # 设置窗体的标题栏
    cv = tk.Canvas(root, height=600, width=600)
    #绘制一个高600,宽600的画布 
    bgpath = filedialog.askopenfilename(title='请选择背景图片')
    #选择背景图片
    image = Image.open(bgpath)
    #打开背景图片
    image = image.resize((600,600), Image.ANTIALIAS)
    #把背景图片调整成窗口大小
    photo = ImageTk.PhotoImage(image) 
    cv.create_image(0, 0, image=photo, anchor='nw')
    #在画布上绘制加载的背景图片 
    bgmusic = filedialog.askopenfilename(title='请选择背景音乐')
    py.mixer.init()
    # 初始化
    py.mixer.music.load(bgmusic)
    # 文件加载
    py.mixer.music.play(-1, 0, fade_ms=50)
    # 播放  第一个是播放值 -1代表循环播放, 第二个参数代表开始播放的时间
    py.mixer.music.pause() 
    #暂停
    py.mixer.music.unpause()
    #取消暂停
    cv.pack()
    #把cv添加进去
    root.protocol("WM_DELETE_WINDOW", close)
    root.after(200, simulate, cv)
    #在0.1秒后再调用stimulate函数,生成一轮烟花绽放效果
    root.mainloop()
    #执行root,生成窗口

关于字体大小,烟花,图片等可以自己调整噢~

七夕七夕!又是单身狗哭泣得一天,python制作表白代码,争取拐个女朋友回来!!_第5张图片

520我爱你,爱意天长地久 ❤

源码/安装包/资料等 点击此处跳转文末名片免费获取

1.首先我们来进行准备工作哈

我们创建一个文件夹命名为lyf,把准备好的女神照片放进去,照片都改成.jpg格式的,序号排序一下。

创建一个520样式的模板文件,新建txt文件把下面这个放进去。

# 520
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,1,1,1,1,1,0,0,1,1,1,1,1,0,0,1,1,1,1,1,0
0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,0
0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,0
0,1,1,1,1,1,0,0,1,1,1,1,1,0,0,1,0,0,0,1,0
0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0
0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,1,0
0,1,1,1,1,1,0,0,1,1,1,1,1,0,0,1,1,1,1,1,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
# name
0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,1,1,1,1,0,0
0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0
0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,0,0
0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0
0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0
0,0,1,1,1,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

然后改名为1.tmp,再新建一个文件夹命名为 templates ,把保存好的模板放进去。

2.然后咱们ctrl+c ctrl+v复制粘贴一下我们的代码

主程序代码

'''

'''
import os
import argparse
from PIL import Image


'''一些超参'''
CELLSIZE = 64


'''图片读取'''
def readImage(img_path, target_size=(64, 64)):
	img = Image.open(img_path)
	img = img.resize(target_size)
	return img


'''图片生成器'''
def yieldImage(target_dir, idx, target_size):
	img_paths = sorted([os.path.join(target_dir, imgname) for imgname in os.listdir(target_dir)])
	idx = (idx + 1) % len(img_paths)
	return readImage(img_paths[idx], target_size), idx


'''解析模板'''
def parseTemplate(template_path):
	template = []
	with open(template_path, 'r') as f:
		for line in f.readlines():
			if line.startswith('#'):
				continue
			template.append(line.strip('\n').split(','))
	return template


'''主函数'''
def main(pictures_dir, template_path):
	template = parseTemplate(template_path)
	w = len(template[0])
	h = len(template)
	image_new = Image.new('RGBA', (CELLSIZE*w, CELLSIZE*h))
	img_idx = -1
	for y in range(h):
		for x in range(w):
			if template[y][x] == '1':
				img, img_idx = yieldImage(pictures_dir, img_idx, (CELLSIZE, CELLSIZE))
				image_new.paste(img, (x*CELLSIZE, y*CELLSIZE))
	image_new.show()
	image_new.save('picturewall.png')


'''run'''
if __name__ == '__main__':
	parser = argparse.ArgumentParser(description="Picture Wall Generator.")
	parser.add_argument('-t', dest='template_path', help='Template path.', default='templates/1.tmp')
	parser.add_argument('-p', dest='pictures_dir', help='Pictures dir.', default='lyf')
	args = parser.parse_args()
	template_path = args.template_path
	pictures_dir = args.pictures_dir
	main(pictures_dir, template_path)

再创建一个py文件,名字改成 rename.py

这一步是读取我们准备好的照片

import os

target_path = 'lyf'
for idx, each in enumerate(os.listdir(target_path)):
	os.rename(os.path.join(target_path, each), os.path.join(target_path, '%s.jpg' % idx))

七夕七夕!又是单身狗哭泣得一天,python制作表白代码,争取拐个女朋友回来!!_第6张图片

更多表白源码/安装包/资料等 点击此处跳转文末名片免费获取

当然啦~光是这些还是不够的噢,更要做出实际行动,让你的女(男)孩感受到你的心噢

七夕七夕!又是单身狗哭泣得一天,python制作表白代码,争取拐个女朋友回来!!_第7张图片

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦

希望本篇文章有对你带来帮助

愿单身的人找到温暖的避风港;

愿热恋的人找到幸福的天堂;

愿爱的花瓣永远轻舞飞扬;

祝你浪漫度过,美梦成真,七夕快乐!

七夕七夕!又是单身狗哭泣得一天,python制作表白代码,争取拐个女朋友回来!!_第8张图片

最后,宣传一下呀~更多源码、资料、素材、解答、交流皆点击下方名片获取呀

你可能感兴趣的:(python,python,开发语言,pycharm,学习)