学习完了python第三方库tkinter一些基本控件的使用后,接着我们来做一些综合案例来熟悉下这些控件的使用,今天我们要做的一个综合案例是登录界面的设计。
import tkinter as tk
from tkinter import messagebox
from PIL import Image, ImageTk
# 创建主窗口
window = tk.Tk()
window.title("登录界面")
window.geometry("800x600")
# 用于存储注册用户信息
users = {}
# 定义登录函数
def login():
username = username_entry.get()
password = password_entry.get()
if username in users and users[username] == password:
messagebox.showinfo("登录成功", "欢迎,你已成功登录!")
else:
messagebox.showerror("登录失败", "用户名或密码错误,请重试。")
# 定义注册函数
def register():
# 创建注册窗口
register_window = tk.Toplevel(window)
register_window.title("注册界面")
register_window.geometry("400x300")
# 注册窗口的标题
register_title_label = tk.Label(register_window, text="注册新用户", font=("font/jian.ttf", 20))
register_title_label.place(x=200, y=50, anchor="center")
# 注册用户名输入框
register_username_label = tk.Label(register_window, text="用户名:", font=("font/jian.ttf", 16))
register_username_label.place(x=50, y=120)
register_username_entry = tk.Entry(register_window, width=20, font=("font/jian.ttf", 16))
register_username_entry.place(x=150, y=120)
# 注册密码输入框
register_password_label = tk.Label(register_window, text="密码:", font=("font/jian.ttf", 16))
register_password_label.place(x=50, y=170)
register_password_entry = tk.Entry(register_window, width=20, show="*", font=("font/jian.ttf", 16))
register_password_entry.place(x=150, y=170)
# 定义注册按钮及其逻辑
def do_register():
new_username = register_username_entry.get()
new_password = register_password_entry.get()
if new_username and new_password:
if new_username in users:
messagebox.showerror("注册失败", "该用户名已存在,请选择其他用户名。")
else:
users[new_username] = new_password
messagebox.showinfo("注册成功", "你已成功注册,请使用新账号登录。")
register_window.destroy()
else:
messagebox.showerror("注册失败", "用户名和密码不能为空,请重新输入。")
register_button = tk.Button(register_window, text="注册", font=("font/jian.ttf", 16), command=do_register)
register_button.place(x=170, y=220)
# 导入图片并设置为背景
image_file = Image.open('images/1.jpg')
bg = image_file.resize((800, 600))
# 设置透明度
bg = bg.convert("RGBA")
bg.putalpha(178)
bg = ImageTk.PhotoImage(bg)
label = tk.Label(window, image=bg)
label.place(x=0, y=0, relwidth=1, relheight=1)
# 登录界面标题
title_label = tk.Label(window, text="欢迎登录", font=("font/jian.ttf", 30))
title_label.place(x=400, y=100, anchor="center")
# 用户名输入框
username_label = tk.Label(window, text="用户名:", font=("font/jian.ttf", 16))
username_label.place(x=200, y=200)
username_entry = tk.Entry(window, width=20, font=("font/jian.ttf", 16))
username_entry.place(x=300, y=200)
# 密码输入框
password_label = tk.Label(window, text="密码:", font=("font/jian.ttf", 16))
password_label.place(x=200, y=250)
password_entry = tk.Entry(window, width=20, show="*", font=("font/jian.ttf", 16))
password_entry.place(x=300, y=250)
# 登录按钮
login_button = tk.Button(window, text="登录", font=("font/jian.ttf", 16), command=login)
login_button.place(x=360, y=300)
# 注册按钮
register_link = tk.Button(window, text="注册", font=("font/jian.ttf", 16), command=register)
register_link.place(x=430, y=300)
window.mainloop()
你坚持不了的事情,总有人能坚持。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。