pyqt5 登陆页面 链接数据库
时间: 2023-07-27 17:09:45 浏览: 166
python3+PyQt5使用数据库表视图
在 PyQt5 中,可以使用 QtSql 模块来链接数据库。以下是一个简单的 PyQT5 登录页面代码,链接 SQLite 数据库:
```python
from PyQt5 import QtWidgets, QtSql
import sys
class Login(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
# 创建控件
self.username = QtWidgets.QLineEdit()
self.password = QtWidgets.QLineEdit()
self.password.setEchoMode(QtWidgets.QLineEdit.Password)
self.login_btn = QtWidgets.QPushButton('登录')
# 创建布局
layout = QtWidgets.QVBoxLayout()
layout.addWidget(QtWidgets.QLabel('用户名'))
layout.addWidget(self.username)
layout.addWidget(QtWidgets.QLabel('密码'))
layout.addWidget(self.password)
layout.addWidget(self.login_btn)
# 设置布局
self.setLayout(layout)
# 链接数据库
db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('test.db')
if not db.open():
QtWidgets.QMessageBox.critical(None, "无法打开数据库",
"无法建立到数据库的连接,这个例子需要SQLite支持,请检查数据库配置\n\n"
"点击取消退出应用程序", QtWidgets.QMessageBox.Cancel)
return
# 创建表格
query = QtSql.QSqlQuery()
query.exec_("create table user (id int primary key, username varchar(20), password varchar(20))")
query.exec_("insert into user values(1, 'admin', 'admin')")
# 链接信号和槽
self.login_btn.clicked.connect(self.login)
def login(self):
username = self.username.text().strip()
password = self.password.text().strip()
# 验证用户名和密码
query = QtSql.QSqlQuery()
sql = "select * from user where username='{0}' and password='{1}'".format(username, password)
query.exec_(sql)
if query.next():
QtWidgets.QMessageBox.information(None, '登录成功', '登录成功')
else:
QtWidgets.QMessageBox.warning(None, '登录失败', '用户名或密码错误')
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = Login()
window.show()
sys.exit(app.exec_())
```
在这个例子中,我们链接了 SQLite 数据库,并创建了一个 user 表格,包含 id、username 和 password 三列。当用户点击登录按钮时,程序会查询数据库中是否存在相应的用户名和密码,如果存在,则弹出登录成功的对话框,否则弹出登录失败的对话框。
阅读全文