【浪漫情人节】送你Python表白神器,祝天下有情人终成眷属

news2024/9/23 9:32:13

哈哈哈再过十几天就到了一年一度的情人节啦!如此浪漫的日子,小王决定用Python写一个简单的表白神器送给大家,祝天下有情人终成眷属! 

bae31f339824406ba3b29d1926d1030b.gif

目录

前言 

一、Turtle小海龟

1. 基本函数 

2. 漂浮爱心 

二、Tkinter界面设计 

1. 基本函数 

2. 表白界面

完整程序 


前言 

主要运用Python的内置包turtle和tkinter,都是Python3的内置包,如果你的Python版本中没有这两个包的话,需要先安装一下喔~

一、Turtle小海龟

因为我们需要用到turtle小海龟来实现漂浮的爱心,所以在这里我们简单介绍一下用到的函数叭~ 

1. 基本函数 

① 设置画板大小 

turtle.setup()

② 设置画布大小 

turtle.screensize()

③ 设置画布颜色

turtle.bgcolor()

④ 关于画笔

t=turtle.Pen()      #设置画笔为t
t.hideturtle()      #隐藏画笔(可简写成t.ht)
t.pensize()         #设置画笔大小
t.color()           #设置画笔颜色
t.penup()           #提笔
t.pendown()         #落笔
t.goto()            #设置画笔初始坐标
t.setheading()      #设置画笔初始方向
t.left()或t.lt()    #将画笔向左旋转
t.right()或t.rt()   #将画笔向右旋转 
t.forward()或t.fd() #画笔向前画
t.fillcolor()       #填充颜色
t.begin_fill()      #开始填充
t.end_fill()        #结束填充
t.circle()          #画圆

⑤ 隐藏/显示画画过程 

turtle.tracer(False)   #隐藏
turtle.tracer(True)    #显示

⑥ 不断刷新画布 

turtle.mainloop()

2. 漂浮爱心 

爱心类 

        def __init__(self):
            self.r = ra.randint(10,15)
            self.x = ra.randint(-1000,1000)
            self.y = ra.randint(-500,500)
            self.f = ra.uniform(-3.14,3.14)
            self.speed = ra.randint(5,10)
            self.color = ra.choice(colors)
            self.outline = 1 

爱心函数 

        def draw(self):
            t.pensize(self.outline)
            t.penup()
            t.color(self.color)
            t.goto(self.x, self.y)
            t.pendown()
            t.begin_fill()
            t.fillcolor('pink')
            t.setheading(120)
            t.circle(self.r, 195)
            t.fd(self.r * 2.4)
            t.lt(90)
            t.fd(self.r * 2.4)
            t.circle(self.r, 195)
            t.end_fill()

漂浮函数 

        def move(self):
            if self.y <= 500:
                self.y += self.speed
                self.x += self.speed * math.sin(self.f)
                self.f += 0.1
            else:
                self.r = ra.randint(10,15)
                self.x = ra.randint(-1000,1000)
                self.y = -500
                self.f = ra.uniform(-3.14,3.14)
                self.speed = ra.randint(5,10)
                self.color = ra.choice(colors)
                self.outline = 1 

二、Tkinter界面设计 

在简单了解了turtle小海龟后,我们就可以画漂浮的爱心啦,但是只有爱心的话就有点单调喽,我们可以使用Python的内置包tkinter设计一个简单的界面,来增强我们的神器哦~

1. 基本函数 

① 创建界面

root=tkinter.Tk()

② 设置界面标题

tkinter.title()

③ 隐藏界面的最小化以及缩放按钮 

root.wm_attributes("-toolwindow",1)

④ 设置界面的大小

root.geometry()

⑤ messagebox提示框 

tkinter.messagebox.showinfo()      #提示
tkinter.messagebox.showwarning()   #警告
tkinter.messagebox.showerror()     #错误
tkinter.messagebox.askyesno()      #判断

⑥ Button按钮 

tkinter.Button()

⑦ 绑定退出事件

root.protocol('WM_DELETE_WINDOW', closeWindow)    #closeWindow为自定义函数

⑧ 销毁界面

root.destroy()

2. 表白界面

同意按钮 

def OK():            #同意按钮
    root.destroy()
    Love()           #同意后显示漂浮爱心

拒绝按钮 

def NO():            #拒绝按钮,拒绝不会退出,必须同意才可以退出哦~
    tk.messagebox.showwarning('❤','再给你一次机会!') 

退出按钮 

def closeWindow():    #绑定退出按钮的事件,无法退出,必须同意哦~
    tk.messagebox.showwarning('❤','逃避是没有用的哦')

完整程序 

点击下载源码:Python情人节表白神器-Python文档类资源-CSDN下载

import tkinter as tk
import tkinter.messagebox
import turtle as tu
import random as ra
import math
def Love():
    tu.setup(1.0, 1.0)
    tu.screensize(1.0, 1.0)
    t = tu.Pen()
    t.ht()
    colors = ['pink']
    class Heart():
        def __init__(self):
            self.r = ra.randint(10,15)
            self.x = ra.randint(-1000,1000)
            self.y = ra.randint(-500,500)
            self.f = ra.uniform(-3.14,3.14)
            self.speed = ra.randint(5,10)
            self.color = ra.choice(colors)
            self.outline = 1
        def draw(self):
            t.pensize(self.outline)
            t.penup()
            t.color(self.color)
            t.goto(self.x, self.y)
            t.pendown()
            t.begin_fill()
            t.fillcolor('pink')
            t.setheading(120)
            t.circle(self.r, 195)
            t.fd(self.r * 2.4)
            t.lt(90)
            t.fd(self.r * 2.4)
            t.circle(self.r, 195)
            t.end_fill()
        def move(self):
            if self.y <= 500:
                self.y += self.speed
                self.x += self.speed * math.sin(self.f)
                self.f += 0.1
            else:
                self.r = ra.randint(10,15)
                self.x = ra.randint(-1000,1000)
                self.y = -500
                self.f = ra.uniform(-3.14,3.14)
                self.speed = ra.randint(5,10)
                self.color = ra.choice(colors)
                self.outline = 1
…… 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/188174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序015中医知识库百科科普系统

本系统为网上用户提供了一个在线浏览知识的平台。主要实现了用户登陆注册、在线浏览知识的功能&#xff0c;用户可以将自己的拥有的知识信息上传到中医药知识库系统中以供其他用户在线浏览并评论。同时实现了中医药知识库系统的后台管理功能&#xff0c;提供了管理员和操作员权…

06 Alibaba微服务组件Sentinel (1)

1、分布式系统遇到的问题 服务的可用性问题 服务的可用性场景 在一个高度服务化的系统中,我们实现的一个业务逻辑通常会依赖多个服务, 如图所示: 如果其中的下单服务不可用, 就会出现线程池里所有线程都因等待响应而被阻塞, 从而造成整个服务链路不可用&#xff0c; 进而导致…

深度解锁 CRUD 应用开发平台

全文 2400 字 阅读时间约 8 分钟 本文首发于码匠技术博客 目录 使用 CRUD 应用开发平台的好处 CRUD 应用开发平台的主要功能 如何使用 CRUD 应用开发平台&#xff1f; 如何自定义 CRUD 应用开发平台&#xff1f; 使用码匠开发的 CRUD 应用程序类型 关于码匠 CRUD 应用是具…

tomcat多实例优化及zabbix监控群集

tomcat简介Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目&#xff0c;由Apache,Sun和其他一些公司及个人共同开发而成。Tomcat服务器是一个免费的开放源代码的Web应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和…

LeetCode——2315. 统计星号

一、题目 给你一个字符串 s &#xff0c;每两个连续竖线 ‘|’ 为 一对 。换言之&#xff0c;第一个和第二个 ‘|’ 为一对&#xff0c;第三个和第四个 ‘|’ 为一对&#xff0c;以此类推。 请你返回不在 竖线对之间&#xff0c;s 中 ‘*’ 的数目。 注意&#xff0c;每个竖…

python flask 操作 Redis,包含详细代码

使用 Flask 操作 Redis 可以通过安装 Redis 的 Python 库并在 Flask 中使用它来实现。 正式学习前&#xff0c;需要先确定 Redis 已安装并可正常运行 运行 redis-server.exe redis.windows.conf 启动 Redis 服务器 运行 redis-cli.exe ping 检查 Redis 服务器是否运行正常 运行…

IP地址扫描程序/扫描工具

随着许多组织采用自带设备 &#xff08;BYOD&#xff09; 等策略&#xff0c;IT 网络变得越来越复杂。随着越来越多的设备连接到网络&#xff0c;IP 地址扫描势在必行&#xff0c;以确保设备在连接到网络时不会遇到问题。IP 地址扫描器是 OpUtils 中的一个模块&#xff0c;是一…

Windows包管理工具winget

文章目录简介实操简介 在Win10或者Win11中默认安装了winget工具&#xff0c;可以直接在命令行中输入命令&#xff0c;如果有反应&#xff0c;说明已经安装。 >winget -v v1.4.10173输入winget可以查看命令列表 命令说明show显示包的相关信息install安装给定的程序包unins…

几何对象基本元素与表现

点与向量 点 (point) 表示空间中的位置&#xff0c;它有空间中的坐标&#xff0c;例如在三维空间中&#xff0c;点有 (x, y, z) 坐标。 向量 (vector) 是有方向的量&#xff0c;它可以表示在空间中的移动。向量可以通过两个点的差计算&#xff0c;它连接起始点和终止点。 结…

第3章:基于媒体查询生成PDF

图:pdfHTML C3F01 检查示例HTML文件 图3.1显示了一个HTML页面,介绍 South by South West,这是德克萨斯州奥斯汀的一项年度活动。该页面分布在三个浏览器窗口中;请参阅 sxsw.html 和 sxsw.css 以获取用于创建此页面的html和css代码。这个HTML页面的布局灵感来自 w3schools…

vite 运行项目报错 ‘axios/index.js‘ does not provide anexport named ‘default‘

报错信息 报错信息&#xff1a;The requested module ‘/node_modules/axios/index.js?v2866e624’ does not provide an export named ‘default’ 现象 使用 vite 打包工具开发时出现&#xff0c;生产环境正常 原因 原因在于 Vite 是完全依靠 ESM 原生能力的&#xff0c…

jspssm学生宿舍预订报修管理系统

目录 摘 要 1 Abstract 2 1 绪论 3 1.1 课题背景 4 1.2 课题研究现状 5 1.3 初步设计方法与实施方案 6 1.4 本文研究内容 7 2 系统开发环境 8 2.1 Java语言 9 2.2 JSP技术 9 2.3 B/S架构 9 2.4 Eclipse环境配置 9 2.5 MySQL数据库 9 3 …

springBean的作用域

前言&#xff1a;最近在进行springBean的作用域学习&#xff0c;并且学习了对应的例子。这里进行一下总结 一&#xff1a;Bean的作用域基础概念 如果想学习SpringBean的生命周期&#xff0c;那么就必须要学习Bean的作用域。因为不同的作用域的bean的生命周期不同 1:singleto…

基于VS2019的ceres solver配置

一、ceres solver介绍Ceres Solver 是一个开源的C库&#xff0c;用于建模和解决大型、复杂的优化问题。它可以用来解决有边界约束的非线性最小二乘法问题和一般无约束的优化问题。官网&#xff1a;http://www.ceres-solver.org/案例网址&#xff1a;http://www.ceres-solver.or…

【数据结构】各排序方法比较

文章目录一、时间性能二、空间性能三、排序方法的稳定性能四、关于排序方法的时间复杂度的下限一、时间性能 按照平均时间性能来分&#xff0c;有三类排序方法&#xff1a; 时间复杂度为 O(nlogn)的方法有&#xff1a; 快速排序、堆排序、归并排序&#xff0c;其中以快速排序最…

Cesium 常见错误集

解决cesium widgets.css is not exported from package 在版本1.9以上版本后,按照官方文档引入css 时 会报错:cesium widgets.css is not exported from package 解决方案: 1.node_modules里找到cesium的package.json文件,在exports里增加导出widgets.css [rml_read_mo…

华为HCIE学习之open stack开篇(笔记)

文章目录一、云计算和虚拟化的区别二、Openstack的作用三、Openstack部署方式四、Openstack内的一些概念1、租户2、镜像3、规格4、网络一、云计算和虚拟化的区别 云计算是一种服务模式&#xff0c;而虚拟化是一种具体的技术。 二、Openstack的作用 Openstack是一个云操作系统…

小程序开发(五)

上拉触底进行节流处理在data中定义isloading发起请求时完成时回调事件响应式判断自定义编译模式&#xff1a;》编译自动跳转生命周期&#xff1a;onlaunch 初始化完成 只执行一次onShow&#xff1a;切换到前台onHide&#xff1a;切换到后台app.js :onReady :渲染完成才可以修改…

优秀的代码最终选择if else,还是switch case

今天我们不讨论哪个写法读起来更优秀&#xff0c;不讨论对于性能而言哪个更完美&#xff0c;也不讨论哪种情况下对于判断语句是常量还是变量的选择&#xff0c;而是单纯从最简单的角度来看一下&#xff0c;为什么很多优秀的项目优秀的代码&#xff0c;最终选择了if else语句&am…

惠普Probook450G7电脑开机总是卡死蓝屏怎么重装系统?

惠普Probook450G7电脑开机总是卡死蓝屏怎么重装系统&#xff1f;有用户在使用惠普Probook450G7电脑的时候&#xff0c;电脑一开机的时候总是会卡死无法操作&#xff0c;然后就变成蓝屏了。那么遇到这个问题怎么去进行系统的重新安装呢&#xff1f;一起来看看重装系统的具体操作…