前言:众所周知,很多人在社交平台看到有小伙伴写小软件来表白也想蠢蠢欲试。但是由于自己技术不强,甚至没有接触过编程相关的知识而灰心。但是别担心,下面我将介绍一种简单上手的小软件制作方法,只要稍加学习便可掌握运用(短时间精通是不太可能了)。
工具:编辑器,python环境。
制作简介:本软件采取了相对之下简单上手的python语言来开发,并且主要用到了 tkinter 模块来开发。tkinter 最大的好处是简单上手,可重复性强。最后将python文件进行打包生成可执行文件发给你心爱的人。当然拿来恶搞也不是不可以哦。
软件展示
动画演示
代码展示

from random import randint
from tkinter import *
import pygame as py
# 初始化
py.mixer.init()
# 文件加载
py.mixer.music.load(".\\music_a.mp3")#可以将她喜欢的歌曲导入
# 播放  第一个是播放值 -1代表循环播放, 第二个参数代表开始播放的时间
#py.mixer.music.play(-1, 10)#创建根窗口
root = Tk()
root.title('仙女登录界面')
root.resizable(0,0)#固定窗口
root.attributes("-alpha", 0.7)#登录窗口的透明化
root.iconbitmap(".\\tkinter_icon.ico")#登录图标设置
users_screenwidth = root.winfo_screenwidth()#获取用户屏幕宽度
users_screenheight = root.winfo_screenheight()#获取用户屏幕高度#窗口大小并居中
root_width = 320
root_height = 200
user_screen_x = (users_screenwidth-root_width) / 2
user_screen_y = (users_screenheight-root_height) / 2
root.geometry("%dx%d+%d+%d" %(root_width,root_height,user_screen_x,user_screen_y))#函数获取用户信息并验证
def function_1():Account = a_enter.get()Password = b_enter.get()
#    Account_len = len(Account)
#    Password_len = len(Password)if Account == "1314520" and Password == "xxx":#此处填入她的名字或者其它tip["text"] = "登录成功!"root.destroy()root2 = Tk()py.mixer.music.play(-1, 10)root2.title('登录成功')root2.resizable(0, 0)  # 固定窗口root2.attributes("-alpha", 0.7)  # 登录窗口的透明化root2.iconbitmap(".\\tkinter_icon.ico")  # 登录图标设置users_screenwidth_2 = root2.winfo_screenwidth()  # 获取用户屏幕宽度users_screenheight_2 = root2.winfo_screenheight()  # 获取用户屏幕高度canvas = Canvas(root2)canvas.pack(side='top')global photophoto = PhotoImage(file='xxx.gif')canvas.create_image(153, 78, image=photo)canvas.create_window(153, 153, window=Button(root2, width=15,activebackground='Turquoise' , text='登录彩蛋',command=lambda: function_2()))# 窗口大小并居中root2_width = 320root2_height = 200user_screen_x_2 = (users_screenwidth_2 - root2_width) / 2user_screen_y_2 = (users_screenheight_2 - root2_height) / 2root2.geometry("%dx%d+%d+%d" % (root2_width, root2_height,user_screen_x_2,user_screen_y_2))# 窗口大小并居中root3_width = 320root3_height = 200user_screen_x_3 = (users_screenwidth_3 - root3_width) / 2user_screen_y_3 = (users_screenheight_3 - root3_height) / 2root3.geometry("%dx%d+%d+%d" % (root3_width, root3_height,user_screen_x_3, user_screen_y_3))else:tip["text"]="用户或密码错误"def function_2():#动画展示函数,此代码转载于网络class SettingBalls:def __init__(self, canvas, scrnwidth, scrnheight):# __init__函数里设置对象的属性# 对象自己的属性,接受canvas参数# Canvas是一个长方形的面积,图画或其他复杂的布局,可以放置在画布上的图形、文字、部件或是帧self.canvas = canvas# tkinter绘图采用屏幕坐标系,原点在左上角,x从左往右递增,y从上往下递增# 在绘图区域内,随机产生当前球的圆心的x坐标和y坐标,用于制定出现的位置self.xpos = randint(10, int(scrnwidth))self.ypos = randint(10, int(scrnheight))# 在绘图区域内,随机产生当前球的x坐标和y坐标的向量# 在数学中,几何向量(也称矢量),指具有大小和方向的量# 这里我们可以用来表示球的速度self.xvelocity = randint(6, 12)self.yvelocity = randint(6, 12)# 随机产生表示当前球的大小,也就是半径长度self.radius = randint(40, 70)# 通过lambda表达式创建函数对象r,每次调用r()都会产生0~255之间的数字r = lambda: randint(0, 255)# 三次调用的数字取前两位,用十六进制数方式存储到self.color里,作为球的颜色# RRGGBB,前2是红色,中2是绿色,后2是蓝色,最小是0,最大是F# 如全黑#000000  全白#FFFFFF  全红#FF0000self.color = "#%02x%02x%02x" % (r(), r(), r())# 获取整个绘图场景的宽度和高度(也就是屏幕分辨率大小)self.scrnwidth = scrnwidthself.scrnheight = scrnheightdef create_ball(self):# canvas.create_oval可以绘制一个圆# 但是需要传入圆的左、上、右、下四个坐标# 所以我们先产生4个坐标,通过这个四个坐标,绘制圆的大小# 左坐标=x坐标-半径x1 = self.xpos - self.radius# 上坐标=y坐标-半径y1 = self.ypos - self.radius# 右坐标=x坐标+半径x2 = self.xpos + self.radius# 下坐标=y坐标+半径y2 = self.ypos + self.radius# 通过canvas.create_oval()方法绘出整个圆,填充色和轮廓色分别是self.color生成的颜色self.ball = self.canvas.create_oval(x1, y1, x2, y2, fill=self.color, outline=self.color)def move_ball(self):# 进行相应的移动,如果坐标超过屏幕边缘则向相反方向移动# 让球的x坐标和y坐标,按照向量的大小进行增加,表示球的运行,向下和向右self.xpos += self.xvelocityself.ypos += self.yvelocity# 如果球的y坐标大于等于屏幕高度和球的半径的差,则调整球的运行y轴方向朝上if self.ypos >= self.scrnheight - self.radius:self.yvelocity = -self.yvelocity# 如果球的y坐标小于等于屏幕高度和球的半径的差,则调整球的y轴运行方向朝下if self.ypos <= self.radius:self.yvelocity = abs(self.yvelocity)# 如果球的x坐标大于等于屏幕宽度和球的半径差,则调整球的运行x轴方向朝左if self.xpos >= self.scrnwidth - self.radius:self.xvelocity = -self.xvelocity# 如果球的x坐标小于等于屏幕宽度和球半径的差,则调整球的运行x轴方向朝右if self.xpos <= self.radius:self.xvelocity = abs(self.xvelocity)# 调整canvas对象的move()方法可以让对象动起来,以及对象x轴和y轴的向量大小self.canvas.move(self.ball, self.xvelocity, self.yvelocity)class MoreBalls:'''获取屏幕参数,绑定相关事件,以及启动生成小球的迭代器@ num:从__main__里接受小球的数量'''# 定义一个列表,用来存储所有的球对象balls = []# num 是球的数量def __init__(self, num):# 创建一个Tk()窗口示例self.root1 = Tk()# w和h分别获取了屏幕分辨率的宽度和高度scrnw, scrnh = self.root1.winfo_screenwidth(), self.root1.winfo_screenheight()# self.root.title("小球弹弹弹")# 去除窗口边框和任务栏显示self.root1.overrideredirect(1)# self.root.iconbitmap("test.ico")# 设置窗口的透明度,0-1之间,1是不透明,0是全透明self.root1.attributes("-alpha", 0.4)# 绑定退出事件(键盘任意键、鼠标任意点击、鼠标任意移动)self.root1.bind("<Any-KeyPress>", self.myquit)self.root1.bind("<Any-Button>", self.myquit)# self.root.bind("<Motion>", self.myquit)# Canvas提供绘图功能(直线、椭圆、多边形等等),宽度和高度是屏幕分辨率大小self.canvas = Canvas(self.root1, width=scrnw, height=scrnh)# 让画布按pack()布局self.canvas.pack()# 获取球的数量生成迭代器,每次迭代创建一个球for i in range(num):# ball是SettingBalls()对象,传入self.canvas画布,以及屏幕的宽高ball = SettingBalls(self.canvas, scrnwidth=scrnw, scrnheight=scrnh)# 调用创建球的方法ball.create_ball()# 将生成的球对象放到balls列表里self.balls.append(ball)# 调用run_ball()方法,启动小球运动self.run_ball()# 调用mainloop()消息循环机制self.root1.mainloop()def run_ball(self):for ball in self.balls:ball.move_ball()# run_ball每个20毫秒会被调用一次self.canvas.after(20, self.run_ball)def myquit(self, event):self.root1.destroy()if __name__ == "__main__":ball = MoreBalls(20)#用户名,a开头
a_label = Label(root,text='账户名称:',font=('华文中宋',20))
a_label.grid(row=0,column=0,sticky=W)
a_enter = Entry(root)
a_enter.grid(row=0,column=1,sticky=E)#密码,b开头
b_label = Label(root,text='      密码:',font=('华文中宋',20))
b_label.grid(row=1,column=0,sticky=W)
b_enter = Entry(root)
b_enter.grid(row=1,column=1,sticky=E)
#输入的密码为*,防止他人偷看
b_enter["show"] = "*"#登录按钮,a开头
a_button=Button(root,text='登录',font=('华文中宋',15),
activebackground='Turquoise',command = lambda:function_1())
a_button.grid(row=2,column=1,sticky=E)#提示信息
tip = Label(root,text="",font=("华文中宋",16))
tip.grid(row=3,)
root.mainloop()

利用 tkinter 写表白软件,加入动画效果相关推荐

  1. android js 开屏动画,利用Flutter实现“孔雀开屏”的动画效果

    前言 今天分享一个类似"孔雀开屏"的动画效果,打开新的页面时,新的页面从屏幕右上角以圆形逐渐打开到全屏. 先来看下具体的效果 不知道这种效果大家叫什么名字?如果有更合适的名字可以在 ...

  2. 79行代码,利用Python写表白程序,女神惊呆了!

    都什么年代了还用这么老土的表白方式 不过,腼腆的你可以试试~ 实用技能Get√ 利用Python生成表白程序,帮你更唯美地表白,成功率极高 导入库 设置屏幕 添加文本信息 按钮 生成随机坐标 点击答应 ...

  3. 父爱动画代码python_情人节锦囊:简单的python表白程序(动画效果)

    今年这个特殊的情人节,如何优雅而又高大上地对自己的心爱女神表白? ? ? 猫老师给你送上锦囊,试试python表白的实现方式吧,是动画版的哦,保证可以如你所愿 ! ! ! 1.动态玫瑰花 代码如下图: ...

  4. python画心形代码大全_情人节锦囊:简单的python表白程序(动画效果)

    今年这个特殊的情人节,如何优雅而又高大上地对自己的心爱女神表白? ? ? 猫老师给你送上锦囊,试试python表白的实现方式吧,是动画版的哦,保证可以如你所愿 ! ! ! 1.动态玫瑰花 代码如下图: ...

  5. java程序 下雨,利用SurfaceView实现下雨与下雪动画效果详解(Kotlin语法)

    前言 最近打算做一波东西巩固一下自己近期所学所得.话不多说,先看一下最终完成的效果图: 下雨.gif 这里比较懒--第二个图片中还是降雨--不过这不是关键点-- 下雪.gif 录制的mp4,转成了gi ...

  6. android 天气动画,Android利用SurfaceView实现下雨的天气动画效果

    首先是最终实现的效果图: 先分析一下雨滴的实现: 每个雨滴其实就是一条线,通过canvas.drawLine()绘制 线(雨滴)的长度.宽度.下落速度.透明度以及位置都是在一定范围内随机生成 每 dr ...

  7. 图形学: 利用VC模拟行星公转自转-动画效果

    涉及领域:计算机图形学 环境:VC++6.0 界面设计: 主要实现功能 旋转 贴图 遮挡 阴影 效果图: 动图效果: 1. 正视角 2. 前视角 源码私信!

  8. python:程序猿的方式在元宵佳节之际,带你设计【东方明珠】动画浪漫烟花秀(python编程利用Tkinter+PIL库)

    python:程序猿的方式在元宵佳节之际,带你设计[东方明珠]动画浪漫烟花秀(python编程利用Tkinter+PIL库) 目录 设计动画展示 设计思路 核心代码 设计动画展示 设计思路 核心代码 ...

  9. matlab车轮滚动动画,Fireworks动画教程:简单制作轮子滚动动画效果

    本教程是向大家介绍利用Fireworks简单制作轮子滚动动画效果,方法很简单,主要想通过这一实例向大家介绍fw mx如何让我们的web design变得更easy,希望大家通过本篇教程能有收获! 一直 ...

最新文章

  1. C语言的sizeof和strlen
  2. 你知道Java文件拷贝有几种方式么?
  3. springboot继承组件_SpringBoot如何扩展引入的组件,以及如何自动配置组件原理
  4. C++中的引用(257BinaryTreePath)
  5. Android高级模糊技术RenderScript和FastBlur
  6. 使用Spring 框架能带来哪些好处?
  7. 天津市职高高一计算机试题及答案,职高(中职)数学(基础模块)上册题库.doc
  8. 转载:关于对REST的基本认识和理解
  9. JDK 12 Early Access Build 12中的原始字符串文字支持
  10. Java探索之旅(16)——异常处理
  11. bzoj千题计划116:bzoj1025: [SCOI2009]游戏
  12. tomcat通过一个端口号实现多域名访问
  13. 【BZOJ3831】Little Bird,单调队列优化DP
  14. 如何做出好看的PPT
  15. (25)梯度下降法求解曲面极小值
  16. springboot xml转json工具类
  17. SQL SERVER STATISTICS
  18. 刘洪波《英文字根词源精讲》完整目录
  19. 健脾和胃,养生食疗——山药枸杞鲫鱼汤了解一下
  20. 好设计如何诞生:关于好设计的100件事

热门文章

  1. 2022高教社杯思路汇总A题B题C题D题
  2. 基于 MySQL 排它锁实现分布式可重入锁解决方案
  3. PS学习之绘制圆角半圆
  4. 【51单片机】AS608指纹锁设计
  5. 机器学习:MixMatch 论文解读
  6. 网络安全通信https工作原理
  7. 第一本人工智能教材入驻高中课堂,程序员们要加油了
  8. mysql 查询空值列_SQL如何查询某行空值列的数量?
  9. 用c语言编写基于sht10传感器的仓库温湿度监测系统的程序,单片机远程仓库湿度监测系统仿真max487+sht11源程序+电路原理图...
  10. 陈浩洋参访中馥科技集团仓储中心,直播单小时破百万