代码拉取完成,页面将自动刷新
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, "用户名或密码无效。"
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。