【Python PyQt PySide6 Pymysql】做一个小小的登录和注册页面

话不多说,先看看我的结果

注册页面

【Python PyQt PySide6 Pymysql】做一个小小的登录和注册页面_第1张图片

登录页面

【Python PyQt PySide6 Pymysql】做一个小小的登录和注册页面_第2张图片

看我如何大显神通,代码如下

第一步:创造ui文件(自己做,这里没有)和SI对象

# 设置空的対接,使页面能够共享,即使用当前页面之后。可以跳转到対接中的一个页面,也可以直接使用,不SI
from PySide6.QtUiTools import QUiLoader
from PySide6.QtWidgets import QMessageBox
# 对象
class SI:
    # 主窗口
    mainWin = None
    # 登录
    loginWin=None
    # 注册
    RegistWin=None
    # display_cons
    display_cons_Win=None

    # 有些共享的方法,我写在别处了

第二步:创建数据库表(自己做,这里没有)

【Python PyQt PySide6 Pymysql】做一个小小的登录和注册页面_第3张图片

第三:创建py文件,创建一个SQL()类,写登录和注册的方法

import pandas as pd
import pymysql as pm
//获取mysql连接
con = pm.connect (
        host='localhost',
        port=3306,
        user='root',
        password='123456',
        database='flowers'
    )
cur = con.cursor ()
# 连接数据库--用户consumer表
class SQL:
# 登录这一部分可以使用数据路,但是,为了装逼,我用pandas
    def login(self, no, name):
        sql = "select * from consumer"
        cur.execute (sql)
        global pdf
        pdf = pd.read_sql (sql, con)
        for i in range (0, len (pdf), 1):
            if pdf.loc[i, 'consumer_no'] == str (no) and pdf.loc[i, 'consumer_name'] == str (name):
         return False
       # print ('登录成功:')
       # print (pdf.loc[i, ['consumer_no', 'consumer_name', 'consumer_phone', 'consumer_address']])
        else:
            return True
            # print ('登录失败')



# 注册页面的实现
    def regist(self, no, name, phone, add):
# 如果能够成功登录,说明
        if (self.login (no, name) == True):
            sql2 = 'INSERT INTO consumer(`consumer_no`,`consumer_name`,`consumer_phone`,`consumer_address`)VALUES(%s,%s,%s,%s)'
            cur.execute (sql2, [no, name, phone, add])
            print("插入成功")
            con.commit ()
            cur.close ()
            con.close ()
            return False
        else:
            return True

第四步:创建类StaS()和Res(),分别对应登录和注册

import pymysql
from PySide6.QtUiTools import *
from PySide6.QtWidgets import *

from 基于pandas的花店管理系统.后端.SQL import SQL
# 登录类
from 基于pandas的花店管理系统.后端.share import SI
# 以下代码都是工具,si.py是对象,实例化的工具,sql是数据库对象的工具
con = pymysql.connect (
    host='localhost',
    port=3306,
    user='root',
    password='123456',
    database='flowers'
)
cur=con.cursor()
class Stats:
    def __init__(self):
        # 从文件中加载UI定义
        # 从 UI 定义中动态 创建一个相应的窗口对象
        # 注意:里面的控件对象也成为窗口对象的属性了
        # 比如 self.ui.button , self.ui.textEdit
        self.ui = QUiLoader().load("../UI/login界面.ui")
        self.ui.tbn.clicked.connect(self.onSignIn)

    def onSignIn(self):
        password=self.ui.edit_pwd.text()
        username=self.ui.edit_name.text()
        if(window().alert(SQL().login(password,username),'登录')==False):
            SI.mainWin=window()
            SI.mainWin.ui.show();
            # 关闭当前窗口
            self.ui.close



# 注册类
class Reg:
    def __init__(self):
        self.ui = QUiLoader().load("../UI/register.ui")
        self.ui.sub.clicked.connect(self.onRegistIn)

    def onRegistIn(self):
        name = self.ui.username.text()
        pwd = self.ui.userpwd.text()
        phone = self.ui.phone.text()
        add=  self.ui.address.currentText()
        if window.alert(SQL().regist(pwd,name,phone,add),'注册')==False:
            #注册完进入登录页面,登录成功才能进入主页面
            SI.mainWin=window()
            # 对象SI.loginWIN的属性ui调用show()
            SI.mainWin.ui.show()
            # 关闭当前窗口
            self.ui.close()

第五步:创建一个类,用来执行以上的代码

if __name__ == '__main__':
    # 通过Qapplication创建一个应用,实例化
    app = QApplication ([])
    # Stas类的实例化--登录界面
    SI.RegistWin = Stats()
    # Reg类--注册页面
    # SI.loginWin =Reg()
    # 展示登录页面
    SI.RegistWin.ui.show ()
    # qpp展示关闭
    app.exec()

你可能感兴趣的:(python,mysql,qt,交互)