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日发布。
———————————————