# 导入需要使用的库
import tkinter as tk
import pymysql
import tkinter.messagebox
import random
# 建立注册账号后跳转登录的页面
def login_page():
global init_frame1
init_frame1 = tk.Frame(root)
init_frame1.pack()
login_admin_label = tk.Label(init_frame1, text="请输入用户名:")
login_admin_label.grid(row=0, column=0, pady=10)
login_admin_entry = tk.Entry(init_frame1, textvariable=admin)
login_admin_entry.grid(row=0, column=1, pady=10)
login_password_label = tk.Label(init_frame1, text="请输入密码:")
login_password_label.grid(row=1, column=0, pady=10)
login_password_entry = tk.Entry(init_frame1, textvariable=admin_password)
login_password_entry.grid(row=1, column=1, pady=10)
# 设计登录按钮命令
login_login_button = tk.Button(init_frame1, text="登录", command=login)
login_login_button.grid(row=2, column=0)
# 设计退出按钮命令
login_quit_button = tk.Button(init_frame1, text="退出", command=quit)
login_quit_button.grid(row=2, column=1, sticky="E")
pass
def register_check():
admin1 = register_admin.get()
pwd1 = first_password.get()
pwd2 = sencond_password.get()
if pwd1 == pwd2:
admin_check_sql = """select * from info where admin = ("%s")""" % (admin1)
cs_register = cs.execute(admin_check_sql)
connection.commit()
if cs.rowcount >= 1:
tkinter.messagebox.showerror("注册失败", "这个用户名已经被注册过啦!")
else:
tkinter.messagebox.showinfo("注册成功", f"你的用户名是{admin1},你的密码是{pwd1}")
register_page.destroy()
admin_sql = """insert into info(admin,password) values("%s","%s")""" % (admin1, pwd1)
cs.execute(admin_sql)
connection.commit()
login_page()
else:
tkinter.messagebox.showerror("注册失败", "两次密码输入不一致!")
pass
# 建立游戏内部算法
def play():
global times
times += 1
try:
num = guess_num.get()
if num == str(generate_num):
s = f"bigo,正确答案是{generate_num},你总共用了{times}次机会"
root.destroy()
elif int(num) > generate_num:
s = "猜的稍微大了一点"
elif int(num) < generate_num:
s = "猜的稍微小了一点"
tkinter.messagebox.showinfo("结果!", s)
except Exception as e:
print(e)
tkinter.messagebox.showwarning("警告", "请输入数字哦,不要白白浪费机会!")
# 建立登录按钮内部命令
def login():
user_admin = admin.get()
user_password = admin_password.get()
login_sql = """select * from info where admin = ("%s") and password = ("%s")""" % (user_admin, user_password)
cs.execute(login_sql)
connection.commit()
if cs.rowcount == 0:
tkinter.messagebox.showerror("登录失败", "账号或者密码错误!")
else:
tkinter.messagebox.showinfo("登陆成功", "游戏开始!")
create_game()
# 初始化相关数据
def init_statistcs():
global times
times = 0
global generate_num
generate_num = random.randint(0, 10)
# 设置登录的按钮命令
def create_game():
init_statistcs()
global guess_num
guess_num = tk.StringVar()
init_frame1.destroy()
game_page = tk.Frame(root)
game_page.pack()
game_guess_num_label = tk.Label(game_page, text="请输入你猜测的数字:")
game_guess_num_label.grid(row=0, column=0, pady=10)
init_admin_entry = tk.Entry(game_page, textvariable=guess_num)
init_admin_entry.grid(row=0, column=1, pady=10)
# 设计确定按钮命令
init_login_button = tk.Button(game_page, text="确定!", command=play)
init_login_button.grid(row=1, column=1)
# 设置注册按钮的命令
def register():
global first_password
global sencond_password
global register_admin
global register_page
register_admin = tk.StringVar()
first_password = tk.StringVar()
sencond_password = tk.StringVar()
init_frame1.destroy()
register_page = tk.Frame(root)
register_page.pack()
register_admin_label = tk.Label(register_page, text="请输入你设置的用户名:")
register_admin_label.grid(row=0, column=0, pady=10)
register_admin_entry = tk.Entry(register_page, textvariable=register_admin)
register_admin_entry.grid(row=0, column=1, pady=10)
register_first_password_label = tk.Label(register_page, text="请输入你设置的密码:")
register_first_password_label.grid(row=1, column=0, pady=10)
register_second_password_label = tk.Label(register_page, text="请再次输入你设置的密码:")
register_second_password_label.grid(row=2, column=0, pady=10)
register_first_password_entry = tk.Entry(register_page, textvariable=first_password)
register_first_password_entry.grid(row=1, column=1, pady=10)
register_second_password_entry = tk.Entry(register_page, textvariable=sencond_password)
register_second_password_entry.grid(row=2, column=1, pady=10)
# 设计确定按钮命令
register_check_button = tk.Button(register_page, text="确定!", command=register_check)
register_check_button.grid(row=3, column=1)
# 初始化,在用户的系统中构造数据库,并且设计界面组件
def init():
# 初始化成功提示
global admin
global admin_password
# tk.messagebox.showinfo("加载成功!","初始化成功!")
# 设计窗口
global root
root = tk.Tk()
admin = tk.StringVar()
admin_password = tk.StringVar()
root.geometry("300x180")
root.title("登录界面")
global init_frame1
init_frame1 = tk.Frame(root)
init_frame1.pack()
global init_admin_entry
global init_password_entry
init_admin_label = tk.Label(init_frame1, text="请输入用户名:")
init_admin_label.grid(row=0, column=0, pady=10)
init_admin_entry = tk.Entry(init_frame1, textvariable=admin)
init_admin_entry.grid(row=0, column=1, pady=10)
init_password_label = tk.Label(init_frame1, text="请输入密码:")
init_password_label.grid(row=1, column=0, pady=10)
init_password_entry = tk.Entry(init_frame1, textvariable=admin_password)
init_password_entry.grid(row=1, column=1, pady=10)
# 设计登录按钮命令
init_login_button = tk.Button(init_frame1, text="登录", command=login)
init_login_button.grid(row=2, column=0)
# 设计退出按钮命令
init_quit_button = tk.Button(init_frame1, text="退出", command=quit)
init_quit_button.grid(row=2, column=1, sticky="E")
# 设计注册命令按钮
init_register_button = tk.Button(init_frame1, text="注册", command=register)
init_register_button.grid(row=2, column=1, padx=10)
pass
root.mainloop()
if __name__ == '__main__':
connection = pymysql.Connect(
host="localhost",
port=3306,
user="root",
password="123456",
database="admin_info"
)
sql1 = """
create table if not exists info(
admin varchar(10),
password varchar(15)
);
"""
cs = connection.cursor()
cs.execute(sql1)
connection.commit()
print("数据库加载成功!")
init()
写的一个游戏的代码,结合了数据库需要注册账号密码和登录,但是需要mysql 中存在admin_info 这个库,有些地方还需要优化
于 2024-04-27 21:44:17 首次发布
文章介绍了使用Python的Tkinter库创建了一个包含登录、注册和游戏功能的用户界面,涉及数据库连接、验证和基本操作。
摘要由CSDN通过智能技术生成