哈哈哈再过十几天就到了一年一度的情人节啦!如此浪漫的日子,小王决定用Python写一个简单的表白神器送给大家,祝天下有情人终成眷属!
目录
前言
一、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
……