写的一个游戏的代码,结合了数据库需要注册账号密码和登录,但是需要mysql 中存在admin_info 这个库,有些地方还需要优化

文章介绍了使用Python的Tkinter库创建了一个包含登录、注册和游戏功能的用户界面,涉及数据库连接、验证和基本操作。
摘要由CSDN通过智能技术生成
# 导入需要使用的库
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()

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值