业务要求:
1、用pyqt5实现一个登录界面,并使用信号与槽实现注册,链接操作数据库。
2、添加注册条件控制,要求不能相同用户名进行注册。
import sys
import sqlite3
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout, QMessageBox
class RegisterWidget(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("注册界面")
self.resize(350, 250)
# 创建用户名标签和输入框
self.username_label = QLabel("用户名:")
self.username_edit = QLineEdit()
# 创建密码标签和输入框
self.password_label = QLabel("密码:")
self.password_edit = QLineEdit()
self.password_edit.setEchoMode(QLineEdit.Password)
# 创建注册按钮
self.register_button = QPushButton("注册")
# 布局管理
layout = QVBoxLayout()
layout.addWidget(self.username_label)
layout.addWidget(self.username_edit)
layout.addWidget(self.password_label)
layout.addWidget(self.password_edit)
layout.addWidget(self.register_button)
self.setLayout(layout)
# 绑定按钮点击事件
self.register_button.clicked.connect(self.handle_register)
def handle_register(self):
# 获取输入的用户名和密码
username = self.username_edit.text()
password = self.password_edit.text()
# 检查用户名是否已存在
conn = sqlite3.connect("users.db")
cursor = conn.cursor()
cursor.execute("SELECT * FROM users WHERE username=?", (username,))
existing_user = cursor.fetchone()
if existing_user is not None:
# 如果存在相同的用户名,向用户显示一个错误消息
QMessageBox.warning(self, "用户名已存在", "该用户名已被注册,请尝试其他用户名!")
return
# 插入数据到数据库
cursor.execute("INSERT INTO users (username, password) VALUES (?, ?)", (username, password))
conn.commit()
conn.close()
# 显示注册成功的提示框
QMessageBox.information(self, "注册成功", "注册成功!")
print("注册成功!")
if __name__ == "__main__":
app = QApplication(sys.argv)
# 创建表格(如果不存在)
conn = sqlite3.connect("users.db")
cursor = conn.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS users (username TEXT, password TEXT)")
conn.close()
register_widget = RegisterWidget()
register_widget.show()
sys.exit(app.exec_())
在这个示例代码中,我们首先连接到 SQLite 数据库并查询表格中是否已存在相同的用户名。
如果查询结果不为空,就向用户显示一个错误消息,并且不进行插入操作。
否则,就插入新的用户名和密码到数据库中,并向用户显示一个注册成功的提示框。