2 Star 0 Fork 0

胡亚诗/AUFE-hys

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
login.py 3.47 KB
一键复制 编辑 原始数据 按行查看 历史
胡亚诗 提交于 2024-06-20 15:06 . xiugai2.0
import re
import sqlite3
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QLineEdit, QMessageBox
class LoginWindow(QMainWindow):
login_successful = pyqtSignal() # 定义 login_successful 信号
def __init__(self):
super(LoginWindow, self).__init__()
self.init_ui()
def init_ui(self):
self.setWindowTitle('登录/注册')
self.resize(300, 200)
self.label_username = QLabel('用户名:', self)
self.label_username.move(50, 30)
self.lineEdit_username = QLineEdit(self)
self.lineEdit_username.move(110, 30)
self.lineEdit_username.resize(150, 20)
self.label_password = QLabel('密码:', self)
self.label_password.move(50, 70)
self.lineEdit_password = QLineEdit(self)
self.lineEdit_password.move(110, 70)
self.lineEdit_password.resize(150, 20)
self.lineEdit_password.setEchoMode(QLineEdit.Password)
self.btn_login = QPushButton('登录', self)
self.btn_login.move(80, 120)
self.btn_login.clicked.connect(self.login)
self.btn_register = QPushButton('注册', self)
self.btn_register.move(160, 120)
self.btn_register.clicked.connect(self.register)
def login(self):
username = self.lineEdit_username.text()
password = self.lineEdit_password.text()
success, message = LoginSystem().login(username, password)
if success:
QMessageBox.information(self, '成功', '登录成功!')
self.login_successful.emit() # 发射登录成功信号
else:
QMessageBox.warning(self, '错误', message)
def register(self):
username = self.lineEdit_username.text()
password = self.lineEdit_password.text()
success, message = LoginSystem().register(username, password)
if success:
QMessageBox.information(self, '成功', '注册成功!')
else:
QMessageBox.warning(self, '错误', message)
class LoginSystem:
def __init__(self, db_name='user.db'):
self.conn = sqlite3.connect(db_name)
self.cursor = self.conn.cursor()
self.create_table()
def create_table(self):
self.cursor.execute('''CREATE TABLE IF NOT EXISTS users
(id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL UNIQUE,
password TEXT NOT NULL)''')
self.conn.commit()
def register(self, username, password):
if not re.match(r'^\d{5,12}$', username):
return False, "用户名必须是5-12位纯数字。"
if not re.match(r'^(?=.*[a-zA-Z])(?=.*\d|.*[\W_])[A-Za-z\d\W_]{8,12}$', password):
return False, "密码必须是8-12个字符,并且包含以下至少两种类型的字符:字母、数字、特殊字符。"
try:
self.cursor.execute("INSERT INTO users (username, password) VALUES (?, ?)", (username, password))
self.conn.commit()
return True, "注册成功。"
except sqlite3.IntegrityError:
return False, "用户名已存在,请更改。"
def login(self, username, password):
self.cursor.execute("SELECT * FROM users WHERE username=? AND password=?", (username, password))
user = self.cursor.fetchone()
if user:
return True, "登录成功。"
else:
return False, "用户名或密码无效。"
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/hu-yashi/aufe-hys.git
git@gitee.com:hu-yashi/aufe-hys.git
hu-yashi
aufe-hys
AUFE-hys
master

搜索帮助