Python满屏飘字代码

系列专栏

  • 《Python趣味编程》
  • 《C/C++趣味编程》
  • 《HTML趣味编程》
  • 《Java趣味编程》

系列文章

序号 直达链接
Tkinter
1 Python李峋同款可写字版跳动的爱心
2 Python跳动的双爱心
3 Python蓝色跳动的爱心
4 Python动漫烟花
5 Python粒子烟花
Turtle
1 Python满屏飘字
2 Python蓝色流星雨
3 Python金色流星雨
4 Python漂浮爱心
5 Python爱心光波①
6 Python爱心光波②
7 Python满天繁星
8 Python五彩气球
9 Python白色飘雪
10 Python七彩花朵
11 Python 3D星空
12 Python大雪纷飞
13 Python一闪一闪亮星星
14 Python爱心泡泡
15 Python爱心射线
16 Python圣诞礼物
17 Python礼物圣诞树
18 Python浪漫星空
19 Python飞舞蝙蝠
20 Python万圣礼物
21 Python蓝色飘雪
Pygame
1 Python跨年烟花
2 Python炫酷烟花
3 Python黑客帝国字母雨
敬请期待……

写在前面

Python实现满屏飘字表白代码的完整代码。

技术需求

  1. 图形界面:使用 Python 的 tkinter 库创建了一个图形界面窗口,该窗口包含了一个简单的表白界面。界面中央有一个按钮用于同意,另一个按钮用于拒绝,且还会弹出相应的提示信息框。

  2. 动画效果

    • 浮动的文本:使用 Python 的 turtle 库生成多个随机位置、颜色、方向和移动速度的文本。文本包含了一些表白语句,它们在屏幕上不断浮动、移动,创造了一种浪漫的表白效果。
    • 彩球动画:使用 turtle 绘制多个彩球,它们从屏幕顶部逐渐向下移动,创造了一种动态的视觉效果。
  3. 随机性:文本和彩球的位置、颜色、速度等都包含随机性,使得每次运行时呈现不同的效果。文本会在屏幕上漂浮,并且每个文本和每个彩球都有独特的属性(如位置、颜色、速度等)。

  4. 用户交互:用户通过点击“好哦”或“不要”按钮来决定程序是否继续。如果用户点击“好哦”,则会退出当前界面并开始执行表白动画。如果点击“不要”,则会弹出提示框告知用户还有机会。

  5. 动画控制

    • 循环更新:通过 turtletracerupdate 方法控制动画的更新频率,使动画顺畅运行。
    • 退出事件:程序禁止通过窗口的关闭按钮直接退出,用户需要通过点击“好哦”按钮来同意退出,否则会弹出警告框。
  6. 跨平台兼容性:使用 Python 标准库 tkinterturtle,这两者在多个操作系统中都可以运行,确保了该程序的跨平台兼容性。

  7. 用户体验

    • 视觉效果:使用动态文本和五彩斑斓的彩球吸引用户注意力,提供了富有创意和视觉冲击的表白方式。
    • 简洁交互:简洁的用户界面设计和按钮交互,容易理解和操作。

完整代码

import turtle as tu
import random as ra
import tkinter as tk
import math

def Main():
    tu.setup(1.0, 1.0)
    tu.screensize(1.0, 1.0)    #设置画布大小
    tu.bgcolor('black')  #设置画布颜色
    tu.title("❤")
    t = tu.Pen()
    t.ht()               #隐藏画笔
    words = ["我爱你",
            "I Love You!",
            "永远爱你",
            "你是我年少的欢喜",
            "一生一世一双人",
            "余生我陪你走",
            "陪你到来生",
            "春风十里不如你",
            "三生有幸来日方长",
            "夜很长幸有你",
            "爱你的全部",
            "踏过八荒四海只为你",
            "愿得一人心",
            "众里寻他千百度",
            "顶峰相见",
            "等你下课",
            "往后余生",
            "Missing You!",
            "做我女朋友好么",
            "你已经在我的未来里了",
            "陪你到世界之巅",
            "白头偕老",
            "我喜欢你",
            "好想好想你",
            "想你想你想你",
            "今夜月色真美",
            "你是我的唯一"
             ]
    class Love():    #文案类
        def __init__(self):
            self.x = ra.randint(-1000,1000)   #文案的横坐标
            self.y = ra.randint(-500,500)     #文案的纵坐标
            self.f = ra.uniform(-3,3)   #文案左右移动
            self.speed = ra.uniform(2,5)     #文案移动速度
            self.word = ra.choice(words)  # 文案
            self.color = "#%02x%02x%02x" % (ra.randint(0,255),ra.randint(0,255),ra.randint(0,255))   #文案的颜色

        def draw(self):                #写每个文案
            t.penup()                  #提笔
            t.goto(self.x,self.y)      #随机位置
            t.pendown()                #落笔
            t.color(self.color)        #文案颜色
            t.write(self.word, align="center", font=("Comic Sans MS", 24, "bold"))
        def move(self):                    #文案移动函数
            if self.y <= 500:            #当文案还在画布中时
                self.y += self.speed     #设置上下移动速度
                self.x -= self.speed * math.sin(self.f)    #设置左右移动速度
            else:                        #当文案漂出了画布时,重新生成一个文案
                self.x = ra.randint(-1000,1000)
                self.y = -500
                self.f = ra.uniform(-3.14, 3.14)  # 文案左右移动呈正弦函数
                self.speed = ra.uniform(2, 5)  # 文案移动速度
                self.word = ra.choice(words)  # 文案
                self.color = "#%02x%02x%02x" % (ra.randint(0, 255), ra.randint(0, 255), ra.randint(0, 255))  # 文案的颜色

……

代码分析

这段代码通过Python的turtlerandomtkinter以及math库,构建了一个简单但富有创意的动画展示,结合了GUI界面和动态画面效果。程序的主要功能是通过“好哦”按钮进入一个画布,展示一系列漂浮的表白文案和五颜六色的彩球动画,创造出一个浪漫、梦幻的互动体验。下面我们将逐步分析每个模块的功能及实现。

1. GUI 界面设计

程序首先通过tkinter库创建了一个GUI界面,显示一个简洁的窗口,窗口中包含一个文本标签、两个按钮以及一个绑定的退出事件。GUI界面代码位于root对象的创建和配置中:

root = tk.Tk()
root.title('❤')
root.resizable(0, 0)  # 禁止窗口调整大小
screenwidth = root.winfo_screenwidth()
screenheight = root.winfo_screenheight()
widths = 300
heights = 100
x = (screenwidth - widths) / 2
y = (screenheight - heights) / 2 - 66
root.geometry('%dx%d+%d+%d' % (widths, heights, x, y))  # 设置窗口居中
  • tk.Tk() 创建了一个窗口对象,title('❤') 设置窗口的标题为心形符号,resizable(0, 0) 禁用了窗口的大小调整功能。
  • screenwidthscreenheight 获取了屏幕的宽度和高度,用于确定窗口在屏幕中的位置。
  • root.geometry() 函数根据屏幕大小调整窗口位置,使其居中显示。

界面中还包含了两个按钮和一个文本标签:

tk.Label(root, text='亲爱的,做我女朋友好吗?', width=37, font=('宋体', 12)).place(x=0, y=10)
tk.Button(root, text='好哦', width=5, height=1, command=OK).place(x=80, y=50)
tk.Button(root, text='不要', width=5, height=1, command=NO).place(x=160, y=50)
  • 标签tk.Label()用于展示一段表白文本“亲爱的,做我女朋友好吗?”。
  • tk.Button() 创建了两个按钮,分别绑定了OKNO函数。
  • place(x, y)函数则是指定按钮的位置。

2. 按钮功能

  • OK() 函数在点击“好哦”按钮时执行,关闭当前的GUI窗口,并调用Main()函数,开始绘制飘字和彩球动画。
  • NO() 函数则在点击“不要”按钮时执行,弹出一个警告框提醒用户“再给你一次机会!”。
  • closeWindow() 函数是绑定在窗口关闭事件上的,当用户尝试关闭窗口时,弹出一个警告框,提醒用户“逃避是没有用的哦”。

3. Main() 函数及动画实现

当点击“好哦”按钮后,Main()函数被调用,开始进入动画的展示。Main()函数通过turtle库创建一个画布和画笔对象,并在画布上进行动态绘制。代码中的关键部分如下:

3.1. 初始化

tu.setup(1.0, 1.0)  # 设置画布大小为屏幕大小
tu.screensize(1.0, 1.0)
tu.bgcolor('black')  # 设置背景色为黑色
tu.title("❤")  # 设置窗口标题为“❤”
t = tu.Pen()  # 创建一个画笔对象
t.ht()  # 隐藏画笔

tu.setup()tu.screensize()使得画布的大小充满整个屏幕,tu.bgcolor('black')设置背景色为黑色,tu.title("❤")则将窗口标题设置为一个心形符号。通过tu.Pen()创建了一个画笔对象t,并使用t.ht()隐藏画笔,使得绘制过程中看不到画笔本身。

3.2. 文案类 Love
Love类的作用是创建飘动的文案,包括表白句子和随机的颜色与位置。文案的生成通过构造函数和draw()move()方法实现:

class Love:
    def __init__(self):
        self.x = ra.randint(-1000, 1000)
        self.y = ra.randint(-500, 500)
        self.f = ra.uniform(-3, 3)  # 随机的偏移角度,控制左右的飘动
        self.speed = ra.uniform(2, 5)  # 随机速度
        self.word = ra.choice(words)  # 随机从预定义的表白文案中选择
        self.color = "#%02x%02x%02x" % (ra.randint(0, 255), ra.randint(0, 255), ra.randint(0, 255))  # 随机颜色
  • self.xself.y 确定了文案的起始位置,self.f 为偏移角度,self.speed 控制文案的上下速度,self.word 随机选择文案文本,self.color 是随机生成的颜色值。

draw()方法负责绘制文案,move()方法则控制文案的移动,当文案移出画布时,重新生成新的文案。

3.3. 彩球类 Ball
Ball类负责创建彩球,彩球也会随机移动并重新生成。

draw()方法负责绘制彩球,move()方法控制彩球的上下移动,当彩球移出画布时,重新生成新的彩球。

4. 动画主循环

在这个主循环中,tu.tracer(0)关闭了动画的自动更新,t.clear()清除了画布上的所有内容,然后遍历了保存文案和彩球的列表Loves,对每个元素调用move()draw()方法。tu.update()则是刷新画布。

5. 总结

该程序通过tkinterturtle库实现了一个富有创意和互动性的动画效果,结合了表白文案和动态彩球,创造了一个浪漫的场景。通过随机生成文案和彩球的位置、颜色、

写在后面

我是一只有趣的兔子,感谢你的喜欢!

你可能感兴趣的:(趣味编程,python,开发语言)