业务要求:
1、用pyqt5实现一个登录界面,并使用信号与槽实现注册,链接操作数据库。
2、添加注册条件控制,要求不能相同用户名进行注册。
3、添加用户名和密码不为空的判断。
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, 180)
# 创建用户名标签和输入框
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()
if(username=='' or password==''):
QMessageBox.warning(self, "用户名或密码为空", "请尝试其他用户名!")
return
# 检查用户名是否已存在
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_())
这段代码是一个 PyQT5 实现的基本注册界面。当用户填写好用户名和密码后,点击注册按钮就会执行 handle_register
函数,将用户名和密码存储到 SQLite 数据库中。
在这个示例代码中,我们还添加了一些额外的检查,以确保输入的用户名和密码不为空。如果其中一个字段为空,handle_register
函数将向用户显示一个警告消息,并且不执行插入操作。
此外,在程序启动时,我们还创建了一个名为 "users.db" 的 SQLite 数据库,并在其中创建了一个名为 "users" 的表格。如果该表格已存在,则不执行任何操作。