You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyQt5中从SQLite3数据库完成用户认证后如何显示用户名

我来帮你搞定这个需求!要实现认证通过后在welcome窗口显示用户名,咱们分几步来操作:

步骤1:完善login-form.py中的认证逻辑并传递用户名

首先你需要补全login_check方法的判断逻辑,当查询到匹配的用户时,实例化welcome窗口并把用户名传递过去。修改后的代码如下:

def login_check(self):
    uname = self.U_name_text.text()
    passw = self.pass_text.text()
    connection = sqlite3.connect("login.db")
    cursor = connection.cursor()
    
    # 执行查询并获取匹配的用户记录
    cursor.execute("SELECT * FROM USERS WHERE USERNAME = ? AND PASSWORD = ?", (uname, passw))
    user = cursor.fetchone()
    connection.close()  # 操作完数据库记得关闭连接,避免资源泄漏
    
    if user:
        # 认证成功,初始化welcome窗口
        self.welcome_window = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(self.welcome_window)
        
        # 把用户名传递给welcome窗口
        ui.set_display_username(uname)
        
        # 显示welcome窗口并关闭当前登录窗口
        self.welcome_window.show()
        self.dialog.close()
    else:
        # 认证失败,给用户弹出提示
        QtWidgets.QMessageBox.warning(self.dialog, "登录失败", "用户名或密码不正确!")

注意:需要在Ui_Dialog2的setupUi方法里保存当前登录窗口的实例,方便后续关闭:

def setupUi(self, Dialog):
    self.dialog = Dialog  # 保存窗口实例
    # 原有setupUi的其他代码...
步骤2:修改welcome.py添加用户名显示功能

接下来要在welcome窗口的UI类里添加接收并显示用户名的逻辑。首先确保你的welcome窗口有一个用于显示用户名的控件(比如QLabel),如果还没有,可以在Qt Designer里添加一个QLabel,设置好对象名(比如welcome_label)。

修改welcome.py的代码:

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        # 原有setupUi代码...
        # 如果是手动创建控件,参考下面的代码(如果是Qt Designer生成的可以忽略这部分)
        self.welcome_label = QtWidgets.QLabel(MainWindow)
        self.welcome_label.setGeometry(QtCore.QRect(150, 60, 300, 30))
        self.welcome_label.setFont(QtGui.QFont("Arial", 12))
        # 其他原有代码...

    def set_display_username(self, username):
        # 更新标签文本,展示用户名
        self.welcome_label.setText(f"欢迎回来,{username}!")
额外提示
  • 记得把login_check方法绑定到登录按钮的clicked信号上,比如在setupUi里添加:self.login_button.clicked.connect(self.login_check)(替换成你实际的按钮对象名)
  • 数据库操作时尽量用cursor执行查询,避免直接用connection.execute,代码更规范

这样操作后,用户输入正确的账号密码登录成功,就会自动跳转到welcome窗口并显示对应的用户名啦!

内容的提问来源于stack exchange,提问作者ndj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:28:01