字母代码雨(完整版)

from tkinter import *
from tkinter.messagebox import *
 
 
# 设置主界面的容器大小和位置
root = Tk()
root.title('登录页面')
root.geometry("800x400+100+150")
 
#声明组件变量
log_name = StringVar()
log_pwd = StringVar()
 
#组件的使用
def btn_login():
    if log_name.get() == '字母代码雨' and log_pwd.get() == '123456':
        showinfo('提示信息','登录成功,请点击"退出"前进')
    else:
        showwarning('提示信息','用户名或密码输入有误~')
 
#组件的使用
Label(root,text='账号:',font=('幼圆',20)).place(x=200,y=80)
Entry(width=27,font=('幼圆',20),textvariable=log_name).place(x=280,y=88)
Label(root,text='密码:',font=('幼圆',20)).place(x=200,y=150)
Entry(width=27,font=('幼圆',20),show='*',textvariable=log_pwd).place(x=280,y=150)
 
Button(text='登录',
       background='white',   # 背景色
       foreground='black',width=15,    # 前景色
       font=('幼圆',20),       #字体  大小
       command=btn_login).place(x=150,y=220)
Button(text='退出',
       background='white',     # 背景色
       foreground='black',      # 前景色
       width=15,font=('幼圆',20),     #字体  大小
       command=lambda:root.quit()).place(x=400,y=220)
 
# 显示图形界面
root.mainloop()
#字母代码雨
import random
import pygame

PANEL_width = 800
PANEL_highly = 600
FONT_PX = 15

pygame.init()
# 创建一个窗口
pygame.display.set_caption("字母代码雨")
winSur = pygame.display.set_mode((PANEL_width, PANEL_highly))
font = pygame.font.SysFont("123.ttf", 25)
bg_suface = pygame.Surface((PANEL_width, PANEL_highly), flags=pygame.SRCALPHA)
pygame.Surface.convert(bg_suface)
bg_suface.fill(pygame.Color(0, 0, 0, 28))
winSur.fill((0, 0, 0))

# 数字版
#texts = [font.render(str(i), True, (0, 255, 0)) for i in range(10)]

# 字母版
letter = ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c',
          'v', 'b', 'n', 'm']
texts = [font.render(str(letter[i]), True, (0, 255, 0)) for i in range(26)]

# 按屏幕的宽带计算可以在画板上放几列坐标并生成一个列表
column = int(PANEL_width / FONT_PX)
drops = [0 for i in range(column)]

while True:
    # 从队列中获取事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()

    # 将暂停一段给定的毫秒数
    pygame.time.delay(30)
    # 重新编辑图像第二个参数是坐上角坐标
    winSur.blit(bg_suface, (0, 0))
    for i in range(len(drops)):
        text = random.choice(texts)
        # 重新编辑每个坐标点的图像
        winSur.blit(text, (i * FONT_PX, drops[i] * FONT_PX))
        drops[i] += 1
        if drops[i] * 10 > PANEL_highly or random.random() > 0.95:
            drops[i] = 0
    pygame.display.flip()

该代码是一个包含登录界面和字母代码雨效果的小程序。

首先,导入了tkinter库和tkinter.messagebox模块,用于创建GUI界面和显示消息框。

然后,创建了一个名为root的Tk对象作为主界面,并设置了标题和大小。

接着,声明了两个组件变量log_name和log_pwd,分别用于存储用户名和密码。

然后,定义了一个名为btn_login的函数,用于处理登录按钮的点击事件。当用户名和密码正确时,弹出登录成功的提示框;否则,弹出用户名或密码输入有误的提示框。

接下来,创建了两个Label组件和两个Entry组件,分别用于显示账号和密码的标签和输入框。

然后,创建了两个Button组件,分别用于登录和退出操作。点击登录按钮会调用btn_login函数进行验证,点击退出按钮会关闭程序。

最后,调用root.mainloop()方法启动图形界面的事件循环,使界面保持显示。

接着,导入了random和pygame库,并初始化了Pygame。

然后,设置了窗口的标题和大小,并创建了一个窗口对象winSur。

接下来,创建了一个字体对象和一个背景表面对象bg_suface,并填充背景表面为半透明黑色。

然后,创建了一个数字和字母的列表texts,用于存储要显示的文本。

接着,根据屏幕的宽度计算了可以在画板上放几列文本,并创建了一个用于存储每列当前位置的列表drops。

然后,进入主循环,不断处理事件和更新界面。在每次循环中,先暂停30毫秒,然后重新编辑图像并绘制到窗口上,以实现字母代码雨的效果。当某列的位置超出窗口高度或随机数大于0.95时,将该列的位置重置为0,以实现字母代码的不断下落。

最后,调用pygame.display.flip()方法更新窗口的显示。

————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
———————————————

————————————————

                下一篇:《数字代码雨(完整版)》,预计2024年5月18日发布。
———————————————

  • 20
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值