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

基于SQLiteDB与PyQt5的温控器用户通讯信息配置开发求助

解决思路与实现步骤

1. 复用现有SQLite操作逻辑

找到代码中处理target_temperature的数据库读写模块(比如封装的DB工具类、查询/更新函数),直接套用这套逻辑操作user表:

  • 读取用户信息:参考目标温度的查询逻辑,从user表获取姓名、手机号、邮箱
    def get_user_profile(self):
        cursor = self.db.cursor()
        # 假设user表只有一条默认记录,用LIMIT 1取第一条
        cursor.execute("SELECT name, phone, email FROM user LIMIT 1")
        result = cursor.fetchone()
        cursor.close()
        # 无数据时返回默认值
        return result if result else ("默认联系人", "", "")
    
  • 保存用户信息:参考目标温度的更新逻辑,覆盖user表的现有记录
    def save_user_profile(self, name, phone, email):
        cursor = self.db.cursor()
        cursor.execute("UPDATE user SET name=?, phone=?, email=?", (name, phone, email))
        self.db.commit()
        cursor.close()
    

如果现有代码有封装好的DB连接实例(比如全局的db_conn),直接复用即可,无需重新创建连接。

2. 界面控件与数据绑定

在PyQt5的Settings界面中添加对应输入控件(QLineEdit用于姓名、手机号、邮箱),参考目标温度的界面绑定流程:

  • 初始化界面时加载数据:
    def init_user_settings(self):
        name, phone, email = self.get_user_profile()
        self.name_edit.setText(name)
        self.phone_edit.setText(phone)
        self.email_edit.setText(email)
    
  • 绑定保存按钮的点击事件:
    def on_save_btn_clicked(self):
        new_name = self.name_edit.text().strip()
        new_phone = self.phone_edit.text().strip()
        new_email = self.email_edit.text().strip()
        self.save_user_profile(new_name, new_phone, new_email)
        # 可选:弹出保存成功提示
        QMessageBox.information(self, "提示", "联系人信息已更新")
    

3. 解决Settings文件的依赖问题

由于Settings文件未导入Location类,可通过构造函数传参的方式传递已有的DB连接对象:

  • 主窗口打开Settings界面时传入DB实例:
    def open_settings(self):
        self.settings_win = SettingsWidget(db=self.db_conn)
        self.settings_win.show()
    
  • Settings类接收DB对象并使用:
    class SettingsWidget(QWidget):
        def __init__(self, db):
            super().__init__()
            self.db = db  # 接收外部传入的DB连接
            self.init_ui()
            self.init_user_settings()
    

4. 验证与测试

  • 启动程序后检查Settings界面是否正确显示默认用户信息
  • 修改输入内容并保存,关闭程序重启后确认数据是否持久化
  • 可通过SQLite可视化工具(如DB Browser for SQLite)直接查看user表,验证数据是否更新

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 09:57:47