基于PysimpleGUI+pymysql建立的简单管理系统(1)—登录界面

     首先,对于管理系统,各位都不陌生,本作将于PysimpleGUI+pymysql基础上对管理系统进行可交互性的操作。

    对于不了解pymysql基本操作的小伙伴可以参考:

https://blog.csdn.net/linwow/article/details/90269246

    对于不了解PysimpleGUI基本操作的小伙伴可以参考:

https://blog.csdn.net/qq_37828873/article/details/114636757

接下来,我将展示管理系统中的登录界面设计:

首先,得现在mysql中创建user_information数据库,并在当中创建user这个表(账号和密码将保存在其中)

 其中,user_account代表着用户的账号,user_password代表着用户的密码

之后往这两个列中输入最初的账号和密码

import pandas as pd                                #导入库
import pymysql
import re
import PySimpleGUI as sg
import os
import time

conn = pymysql.connect(host="localhost",           #打开数据库连接
                           user="root",  
                           password="",   
                           db="user_information",       
                           charset="utf8")      
cursor = conn.cursor()                             #使用 cursor() 方法创建一个游标对象
sql ="select user_account from user "              #取出存在数据库中的账号
cursor.execute(sql)
result = cursor.fetchall()
data_user_account = pd.DataFrame(list(result))     
sql ="select user_password from user "             #取出存在数据库中的密码
cursor.execute(sql)
result = cursor.fetchall()
data_user_password = pd.DataFrame(list(result))
cursor.close()
conn.close()

layout = [[sg.Text("请输入账号")],                 #界面设计
          [sg.Input(key='-INPUT-')],            
          [sg.Text("请输入密码")],
          [sg.Input(key='-INPUT-',password_char='*')],   #password_char='*'密码将以*显现
          [sg.Text(size=(40,1), key='-OUTPUT-')],
          [sg.Button('Ok'), sg.Button('退出')]]    #设置按钮

window = sg.Window('登录界面', layout)              
while True:
    event, values = window.read()                  #读取动作和数值
    if event == sg.WINDOW_CLOSED or event == '退出':
        break    
    values = pd.DataFrame([values])
    if values.iat[0,0] == '' or values.iat[0,1]=='':
        window.close()
        layout = [[sg.Text("填写为空!")],
                [sg.Button('返回')]]
        window = sg.Window('错误', layout)
        while True:
            event, values = window.read()
            if event == sg.WINDOW_CLOSED:
                break 
            if  event == '返回':
                time.sleep(0.5)
                window.close()
                os.system('python login.py')       #这里将重新跳转回login.py中
    user_account = int(values.iat[0,0])
    user_password = int(values.iat[0,1])
    user_account_examine = data_user_account.isin([user_account])
    user_password_examine = data_user_account.isin([user_password])
    for index,row1 in user_account_examine.iterrows():         #比对输入的账号和密码
        if row1[0]  == True :
            for index,row2 in user_password_examine.iterrows():
                if row2[0] == True:
                    time.sleep(0.5)
                    window.close()
                    os.system('python menu.py')       #这里将跳转到menu.py中
                    break
                else:
                    window['-OUTPUT-'].update("密码错误,请重试!")
        else:
            window['-OUTPUT-'].update("账号未创建,请重试!")     
window.close()

运行截图:

 

 

 menu.py菜单的代码:

基于PysimpleGUI+pymysql建立的简单管理系统(2)_lwgwl的博客-CSDN博客

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
基于tkinter+mysql登录界面系统的开发可以分为以下几步: 1. 安装MySQL数据库PythonMySQL驱动程序。 2. 创建一个MySQL数据库和一张用户表,用于存储用户信息。 3. 使用Python连接MySQL数据库,并编写SQL语句实现用户信息的查询、插入、更新和删除等操作。 4. 使用Tkinter创建登录窗口,包括输入用户名和密码的文本框、登录按钮和注册按钮等控件。 5. 在登录按钮的事件处理函数中,获取用户名和密码,使用Python查询用户信息,判断用户是否存在并且密码是否正确。如果验证通过,则跳转到主界面,否则提示用户登录失败。 6. 在注册按钮的事件处理函数中,弹出一个注册窗口,包括输入用户名、密码和确认密码的文本框、注册按钮和取消按钮等控件。在注册按钮的事件处理函数中,获取用户输入的信息,使用Python插入新的用户信息到数据库中。 下面是一个基于tkinter+mysql登录界面系统的代码示例: ```python import tkinter as tk import tkinter.messagebox import pymysql class LoginWindow: def __init__(self): self.win = tk.Tk() self.win.title('登录') self.win.geometry('300x200') tk.Label(self.win, text='用户名:').grid(row=0, column=0) self.username_entry = tk.Entry(self.win) self.username_entry.grid(row=0, column=1) tk.Label(self.win, text='密码:').grid(row=1, column=0) self.password_entry = tk.Entry(self.win, show='*') self.password_entry.grid(row=1, column=1) tk.Button(self.win, text='登录', command=self.login).grid(row=2, column=0) tk.Button(self.win, text='注册', command=self.register).grid(row=2, column=1) self.conn = pymysql.connect(host='localhost', user='root', password='root', database='test', charset='utf8') self.cursor = self.conn.cursor() def login(self): username = self.username_entry.get() password = self.password_entry.get() sql = f"SELECT * FROM user WHERE username='{username}' AND password='{password}'" self.cursor.execute(sql) result = self.cursor.fetchone() if result: tk.messagebox.showinfo('登录成功', f'欢迎回来,{username}!') self.win.destroy() MainWindow() else: tk.messagebox.showerror('登录失败', '用户名或密码错误!') def register(self): RegisterWindow(self.cursor) def __del__(self): self.cursor.close() self.conn.close() class RegisterWindow: def __init__(self, cursor): self.win = tk.Toplevel() self.win.title('注册') self.win.geometry('300x200') tk.Label(self.win, text='用户名:').grid(row=0, column=0) self.username_entry = tk.Entry(self.win) self.username_entry.grid(row=0, column=1) tk.Label(self.win, text='密码:').grid(row=1, column=0) self.password_entry = tk.Entry(self.win, show='*') self.password_entry.grid(row=1, column=1) tk.Label(self.win, text='确认密码:').grid(row=2, column=0) self.confirm_password_entry = tk.Entry(self.win, show='*') self.confirm_password_entry.grid(row=2, column=1) tk.Button(self.win, text='注册', command=self.register).grid(row=3, column=0) tk.Button(self.win, text='取消', command=self.win.destroy).grid(row=3, column=1) self.cursor = cursor def register(self): username = self.username_entry.get() password = self.password_entry.get() confirm_password = self.confirm_password_entry.get() if password != confirm_password: tk.messagebox.showerror('注册失败', '两次输入的密码不一致!') return sql = f"SELECT * FROM user WHERE username='{username}'" self.cursor.execute(sql) result = self.cursor.fetchone() if result: tk.messagebox.showerror('注册失败', '用户名已存在!') else: sql = f"INSERT INTO user (username, password) VALUES ('{username}', '{password}')" self.cursor.execute(sql) tk.messagebox.showinfo('注册成功', '注册成功!') self.win.destroy() class MainWindow: def __init__(self): self.win = tk.Tk() self.win.title('主界面') self.win.geometry('300x200') tk.Label(self.win, text='欢迎使用本系统!').pack() if __name__ == '__main__': LoginWindow() ``` 这个程序中,LoginWindow类表示登录窗口,RegisterWindow类表示注册窗口,MainWindow类表示主界面。程序使用pymysql模块连接MySQL数据库,使用tkinter模块创建GUI界面。在登录按钮的事件处理函数中,通过SQL语句查询用户信息,判断用户是否存在并且密码是否正确。在注册按钮的事件处理函数中,弹出一个注册窗口,等待用户输入用户名和密码,并将新的用户信息插入到数据库中。如果登录成功,则跳转到主界面。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lwgwl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值