Lazy loading and loading now

本文介绍了几种改变默认(懒加载)行为的方法,这些方法对于调整软件工具链中的绑定行为至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

def edit_CQR_table(self, pos): # 检查 pos 是否有效 if not isinstance(pos, QtCore.QPoint): return menu = QMenu(self) action_add_now_disease_Window = QAction("添加", self) action_delete_now_disease = QAction("删除", self) action_revise_now_disease = QAction("修改", self) menu.addAction(action_add_now_disease_Window) menu.addAction(action_delete_now_disease) menu.addAction(action_revise_now_disease) action_add_now_disease_Window.triggered.connect(self.add_now_disease) action_delete_now_disease.triggered.connect(self.delete_now_disease) action_revise_now_disease.triggered.connect(self.revise_now_diseas) menu.exec_(self.ui.tableWidget__CQR_now_disease.viewport().mapToGlobal(pos)) def add_now_disease(self): if hasattr(self, 'now_disease_Window') and self.now_disease_Window.isVisible(): return self.now_disease_Window = now_disease_Window(mode='add', parent=self) self.now_disease_Window.operation_completed.connect(self.load_data) # 连接操作完成信号 self.now_disease_Window.show() def revise_now_diseas(self): selected_rows = self.ui.tableWidget__CQR_now_disease.selectionModel().selectedRows() if not selected_rows: #selectionModel().selectedRows() 可以更准确、安全地获取用户当前选中的 整行 数据,而不是仅仅依赖于某些单元格的内容。 QMessageBox.warning(self, "警告", "请先选择一行记录") return row_idx = selected_rows[0].row() symptom_name = self.ui.tableWidget__CQR_now_disease.item(row_idx, 0).text() if self.edit_window: self.edit_window.close() self.now_disease_Window = now_disease_Window( mode='edit', symptom_name=symptom_name, parent=self ) self.now_disease_Window.operation_completed.connect(self.CQR_now_disease) # 连接操作完成信号 self.now_disease_Window.show() def delete_now_disease(self): selected_rows = self.ui.tableWidget__CQR_now_disease.selectionModel().selectedRows() if not selected_rows: QMessageBox.warning(self, "警告", "请先选择一行记录") return row_idx = selected_rows[0].row() symptom_name = self.ui.tableWidget__CQR_now_disease.item(row_idx, 0).text() reply = QMessageBox.question( self, '确认删除', f"确定要删除症状 '{symptom_name}' 吗?", QMessageBox.Yes | QMessageBox.No ) if reply == QMessageBox.Yes: try: with POOL.connection() as conn: with conn.cursor() as cursor: cursor.execute("DELETE FROM `现病史` WHERE 症状 = %s", (symptom_name,)) conn.commit() self.CQR_now_disease() # 刷新表格 QMessageBox.information(self, "成功", "症状已成功删除") except Exception as e: conn.rollback() QMessageBox.critical(self, "数据库错误", f"删除失败: {str(e)}") class now_disease_Window(QMainWindow): operation_completed = pyqtSignal() def __init__(self, mode=None, symptom_name=None, parent=None): super().__init__(parent) self.ui = Ui_now_disease_Window() self.ui.setupUi(self) self.mode = mode # 'add' 或 'edit' self.symptom_name = symptom_name # 检查数据库连接 if not self.check_db_connection(): QMessageBox.critical(self, "数据库错误", "无法连接数据库") QTimer.singleShot(100, self.close) return if self.mode == 'add': self.ui.pushButton.setText("添加") self.ui.pushButton.clicked.connect(self.submit_data) elif self.mode == 'edit': self.ui.pushButton.setText("更新") self.ui.pushButton.clicked.connect(self.update_disease) # 延迟加载数据 QTimer.singleShot(100, self.show_disease) self.show() def check_db_connection(self): """检查数据库连接是否可用""" try: with POOL.connection() as conn: with conn.cursor() as cursor: cursor.execute("SELECT 1") return True except Exception as e: print(f"数据库连接失败: {str(e)}") return False def submit_data(self): """提交数据到数据库""" disease = self.ui.lineEdit.text() detail = self.ui.textEdit.toPlainText() pinyin_list = lazy_pinyin(disease, style=Style.FIRST_LETTER) pinyin_text = ''.join(pinyin_list) # 设置文本框显示值 self.ui.lineEdit_2.setText(pinyin_text) # 简单的验证 if not disease: QMessageBox.warning(self, "输入错误", "请输入要添加的内容!") return if not detail: QMessageBox.warning(self, "输入错误", "请输入问诊要点!") return try: with POOL.connection() as conn: with conn.cursor() as cursor: # 添加新记录 sql = "INSERT INTO `现病史` (症状,问诊要点,首拼) VALUES (%s, %s, %s)" cursor.execute(sql, (disease,detail, pinyin_text)) conn.commit() if cursor.rowcount > 0: QMessageBox.information(self, "成功", "数据添加成功!") self.operation_completed.emit() else: QMessageBox.warning(self, "失败", "数据添加失败,请重试。") except Exception as e: conn.rollback() QMessageBox.critical(self, "数据库错误", f"操作失败: {str(e)}") def show_disease(self): try: with POOL.connection() as conn: with conn.cursor() as cursor: sql = """SELECT 症状,问诊要点,首拼 FROM `现病史` WHERE `症状` = %s""" cursor.execute(sql, (self.symptom_name,)) symptom_data = cursor.fetchone() # 返回字典 if symptom_data: # 使用字段名访问数据 self.ui.lineEdit.setText(symptom_data['症状']) self.ui.lineEdit_2.setText(symptom_data['首拼']) self.ui.textEdit.setPlainText(symptom_data['问诊要点']) else: QMessageBox.warning(self, "失败", "症状查询失败。") except Exception as e: conn.rollback() QMessageBox.critical(self, "数据库错误", f"操作失败: {str(e)}") def update_disease(self): disease = self.ui.lineEdit.text() detail = self.ui.textEdit.toPlainText() shoupin = self.ui.lineEdit_2.text() try: with POOL.connection() as conn: with conn.cursor() as cursor: sql = """ UPDATE `现病史` SET `症状` = %s, `首拼` = %s, `问诊要点` = %s, WHERE `症状` = %s """ cursor.execute(sql, (disease, shoupin, detail, self.symptom_name)) conn.commit() if cursor.rowcount > 0: QMessageBox.information(self, "成功", "数据更新成功!") self.operation_completed.emit() else: QMessageBox.warning(self, "失败", "数据更新失败,请重试。") except Exception as e: conn.rollback() QMessageBox.critical(self, "数据库错误", f"操作失败: {str(e)}") 还是打开后空白并且卡退
07-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值