Python基础教程 您所在的位置:网站首页 pycharm制作爱心动态 Python基础教程

Python基础教程

2024-07-03 00:28| 来源: 网络整理| 查看: 265

“流星雨是世间宝藏,而你是我的人间理想” 写在前面 冲鸭,冬鱼带你一起去看流星雨!这里有蓝色系和粉色系的流星雨,小伙伴们喜欢蓝色系的流星雨,还是粉色系的流星雨呢?当然啦,也可以改成你喜欢的颜色哦,一起来看看吧~

环境:Python

软件:PyCharm

详细分析

这是一个用 Python 语言编写的爱情表白程序,包含两个部分,一个是流星雨动画,另一个是表白窗口。用户可以选择同意或拒绝表白,如果同意,就会看到一个流星雨动画,如果拒绝,则需要再次选择,直到同意为止。下面对程序进行详细分析:

1.导入库和模块

程序中使用了 turtle 库、random 库、tkinter 库和 math 库。turtle 库用于绘制流星,random 库用于生成随机数,tkinter 库用于实现表白窗口,math 库用于计算弧度。

2.定义流星类

定义了一个 Star 类用于描述流星的属性和行为。在初始化函数中,随机生成了流星的初始位置、大小、颜色、速度和角度等属性。在 star 函数中实现了绘制流星的具体过程,使用 turtle 库中的函数在画布上绘制流星。在 move 函数中实现了流星的运动轨迹,使流星向下和向右方向移动,并且当流星超出画布边界时,重新生成流星的位置和属性。

3.生成所有流星

生成一个包含 100 个流星的列表,每个流星的属性随机生成。

4.绘制流星雨

使用 while 循环实现流星雨的动画效果,每次循环清空画布,并绘制所有流星的运动轨迹和形状,然后更新画布,使其显示出来。

5.定义爱情表白窗口

使用 tkinter 库实现一个简单的表白窗口,包含一段文字和两个按钮:同意和拒绝。当点击同意按钮时,窗口关闭,跳转到流星雨动画界面。如果点击拒绝按钮,则弹出提示框,提醒用户再次选择。

6.绑定退出事件

使用 protocol() 函数绑定了退出事件,当点击窗口的关闭按钮时,弹出提示框,让用户再次确认是否退出程序。

总体来说,这个流星雨程序使用了多个库和模块,实现了流星雨动画和表白窗口的效果,并实现了一些交互功能,带来了一些新鲜和有趣的体验。

运行结果

蓝色流星雨

粉色流星雨

完整代码 import turtle as tu import random as ra import tkinter as tk import math def Meteors(): tu.setup(1.0, 1.0) tu.screensize(1.0, 1.0) #设置画布大小 tu.bgcolor('black') #设置画布颜色 tu.title("流星雨") t = tu.Pen() t.hideturtle() #隐藏画笔 # colors = ['skyblue', 'white', 'cyan', 'aqua'] #流星的颜色列表,蓝色 colors = ['pink', 'lightpink', 'deeppink'] #粉色 class Star(): #流星类 def __init__(self): self.r = ra.randint(50,100) self.t = ra.randint(1,3) self.x = ra.randint(-2000,1000) #流星的横坐标 self.y = ra.randint(444, 999) #流星的纵坐标 self.speed = ra.randint(5,10) #流星移动速度 self.color = ra.choice(colors) #流星的颜色 self.outline = 1 #流星的大小 def star(self): #画流星函数 t.pensize(self.outline) #流星的大小 t.penup() #提笔 t.goto(self.x,self.y) #随机位置 t.pendown() #落笔 t.color(self.color) t.begin_fill() t.fillcolor(self.color) t.setheading(-30) t.right(self.t) t.forward(self.r) t.left(self.t) t.circle(self.r*math.sin(math.radians(self.t)),180) t.left(self.t) t.forward(self.r) t.end_fill() def move(self): #流星移动函数 if self.y >= -500: #当流星还在画布中时 self.y -= self.speed #设置上下移动速度 self.x += 2*self.speed #设置左右移动速度 else: self.r = ra.randint(50,100) self.t = ra.randint(1,3) self.x = ra.randint(-2000,1000) self.y = 444 self.speed = ra.randint(5,10) self.color = ra.choice(colors) self.outline = 1 Stars = [] #用列表保存所有流星 for i in range(100): Stars.append(Star()) while True: #开始绘制 tu.tracer(0) t.clear() for i in range(100): #80个流星 Stars[i].move() Stars[i].star() tu.update() tu.mainloop() def love(): root = tk.Tk() root.title('❤') root.resizable(0, 0) root.wm_attributes("-toolwindow", 1) screenwidth = root.winfo_screenwidth() screenheight = root.winfo_screenheight() widths = 300 heights = 100 x = (screenwidth - widths) / 2 y = (screenheight - heights) / 2 root.geometry('%dx%d+%d+%d' % (widths, heights, x, y)) # 设置在屏幕中居中显示 tk.Label(root, text='亲爱的,做我女朋友好吗?', width=37, font=('宋体', 12)).place(x=0, y=10) def OK(): # 同意按钮 root.destroy() # 同意后显示相应的效果 Meteors() def NO(): # 拒绝按钮,拒绝不会退出,必须同意才可以退出哦~ tk.messagebox.showwarning('❤', '再给你一次机会!') def closeWindow(): tk.messagebox.showwarning('❤', '逃避是没有用的哦') 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) root.protocol('WM_DELETE_WINDOW', closeWindow) # 绑定退出事件 root.mainloop() if __name__ == "__main__": love()

最后这里免费分享给大家一份Python学习资料,包含视频、源码。课件,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。 编程资料、学习路线图、源代码、软件安装包等!

看下方图片哦(掉落)↓↓↓

① Python所有方向的学习路线图,清楚各个方向要学什么东西 ② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析 ③ 100多个Python实战案例,学习不再是只会理论 ④ 华为出品独家Python漫画教程,手机也能学习 ⑤ 历年互联网企业Python面试真题,复习时非常方便****

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有