基于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
相关产品推荐
相关产品推荐

