利用pyqt和mysql创建登入界面

mysql操作

首先先创建一个login表并插入数据

import pymysql
#打开数据库连接
conn = pymysql.connect(host="localhost",user = "root",passwd = "chuge325",db = "test")
#获取游标
cursor=conn.cursor()
print(cursor)

#创建user表
cursor.execute('drop table if exists login')
sql1= """CREATE TABLE login(
     name VARCHAR(128) NOT NULL, 
     passwd VARCHAR(256) NOT NULL,  
     PRIMARY KEY(name)
 )  ; """
sql2="insert into login values(%s,%s)"
cursor.execute(sql1)
# inser one way 1
cursor.execute("insert into login values('admin','123456')")
# insert one way 2
cursor.execute(sql2,('admin2','123456'))
# insert some way3
cursor.executemany(sql2,[('admin3','123456'),('admin4','123456')])

cursor.close()#先关闭游标
conn.commit()
conn.close()#再关闭数据库连接
print('创建数据表成功')

查询插入内容

import pymysql
#打开数据库连接
conn = pymysql.connect(host="localhost",user = "root",passwd = "chuge325",db = "test")
#获取游标
cur=conn.cursor()

cur.execute("select * from login;")
while 1:
    res=cur.fetchone()
    if res is None:
        #表示已经取完结果集
        break
    print (res)
cur.close()
conn.commit()
conn.close()
print('sql执行成功')

在这里插入图片描述

界面设计

from src.main import Main
import sys
from PyQt5.QtWidgets import *
# 这里自己根据main的位置进行修改
from src.test_learn_ytc.src.main import Main

import pymysql

print(sys.path)


class Login(QWidget):
    def __init__(self, parent=None):
        #super(Login, self).__init__(parent)
        super().__init__()
        self.setWindowTitle('用户登录')
        #self.setFixedSize(300, 150)
        self.center()
        self.main=Main()
  
        
        self.account = QLineEdit()
        self.password = QLineEdit()
        self.password.setEchoMode(2)
        self.button_login = QPushButton('登录')
        self.button_login.clicked.connect(self.login)
        self.button_register = QPushButton('注册')
        self.button_cancel=QPushButton('清空')
        self.button_cancel.clicked.connect(self.cancel)
        # 布局
        grid_layout=QGridLayout()
        v_layout=QVBoxLayout()
        h_layout=QHBoxLayout()
        
        grid_layout.addWidget(QLabel('账号'),0,0)
        grid_layout.addWidget(self.account,0,1)
        grid_layout.addWidget(QLabel('密码'),1,0)
        grid_layout.addWidget( self.password,1,1)
        h_layout.addWidget(self.button_login)
        h_layout.addWidget(self.button_register)
        h_layout.addWidget(self.button_cancel)
        v_layout.addLayout(grid_layout)
        v_layout.addLayout(h_layout)
        self.setLayout(v_layout)

    #窗体功能
    def center(self):
        screen = QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move((screen.width() - size.width()) / 2,
                  (screen.height() - size.height()) / 2)
    # 按钮功能
    def login(self):
        obj=MysqlSearch()
        result=obj.get_userinfo()
        name=self.account.text()
        pwd=self.password.text()
        ulist=[]
        plist=[]
        for item in result:
            ulist.append(item['name'])
            plist.append(item['passwd'])
        for i in range(len(ulist)):  
            if name==ulist[i] and pwd==plist[i]:
                self.main.show()
                self.hide()
                break          
        else:
            QMessageBox.information(self,'提示','用户密码错误')


        

    def cancel(self):
	# 清空用户输入的用户名和密码

        self.account.setText("")
        self.password.setText("")
    
    
    
class MysqlSearch(object):
        
     # 数据库操作功能
    def __init__(self) :
        self.get_conn()
        
    # 获取连接
    def get_conn(self):
        try:
            self.conn = pymysql.connect(host="localhost",user = "root",passwd = "passwd",db = "test")
        except pymysql.Error as e:
            print('Error: %s' % e)
        return None
    
    
    def close_conn(self):
        try:
            if self.conn:
                self.conn.close()
        except pymysql.Error as e:
            print('Error: %s' % e)

        return None
    def get_userinfo(self):
        sql = 'SELECT * FROM login'
        # 使用cursor()方法获取操作游标
        cursor = self.conn.cursor()
        cursor.execute(sql)
        # 使用fetchall()方法获取全部数据
        result=cursor.fetchall()
        result=[dict(zip([k[0] for k in cursor.description],row)) for row in result]
        cursor.close()
        self.close_conn()
        return result
         






  

    
        

if __name__ == '__main__':
    app = QApplication(sys.argv)
    login = Login()
    login.show()
    sys.exit(app.exec_())
from PyQt5.QtWidgets import QWidget,QDesktopWidget,QApplication
import sys



class Main(QWidget):
    def __init__(self,parent=None) :
        super(Main,self).__init__(parent)
        self.setFixedSize(500,500)
        self.center()
    def center(self):
        screen = QDesktopWidget().screenGeometry()
        size = self.geometry()
        self.move((screen.width() - size.width()) / 2,
                  (screen.height() - size.height()) / 2)

登入login效果
在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
以下是一个简单的PyQt5 MySQL登录注册系统界面的示例代码: ```python from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout, QHBoxLayout, QMessageBox import mysql.connector class Login(QWidget): def __init__(self): super().__init__() self.setWindowTitle("Login") self.username = QLineEdit() self.password = QLineEdit() self.password.setEchoMode(QLineEdit.Password) login_button = QPushButton("Login") login_button.clicked.connect(self.login) register_button = QPushButton("Register") register_button.clicked.connect(self.register) layout = QVBoxLayout() layout.addWidget(QLabel("Username:")) layout.addWidget(self.username) layout.addWidget(QLabel("Password:")) layout.addWidget(self.password) button_layout = QHBoxLayout() button_layout.addWidget(login_button) button_layout.addWidget(register_button) layout.addLayout(button_layout) self.setLayout(layout) def login(self): username = self.username.text() password = self.password.text() conn = mysql.connector.connect(user='root', password='password', host='localhost', database='database') cursor = conn.cursor() cursor.execute("SELECT * FROM users WHERE username=%s AND password=%s", (username, password)) user = cursor.fetchone() if user is not None: QMessageBox.information(self, "Login", "Login successful") else: QMessageBox.warning(self, "Login", "Invalid username or password") conn.close() def register(self): username = self.username.text() password = self.password.text() conn = mysql.connector.connect(user='root', password='password', host='localhost', database='database') cursor = conn.cursor() cursor.execute("INSERT INTO users (username, password) VALUES (%s, %s)", (username, password)) conn.commit() QMessageBox.information(self, "Register", "Registration successful") conn.close() if __name__ == '__main__': app = QApplication([]) login = Login() login.show() app.exec_() ``` 在这个示例中,我们创建了一个登录窗口,并在该窗口上添加了用户名和密码的 QLineEdit,以及一个登录和注册按钮。当用户点击登录或注册按钮时,我们将从数据库中检索或插入相应的用户记录。我们使用了 PyMySQL 模块来连接 MySQL 数据库。注意,在实际应用程序中,你需要使用加密技术来保护用户密码,以免密码被未经授权的用户访问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值