def _on_segment_item_changed(self, item: QTableWidgetItem): """when user enters new value to segments table""" if self.segments_edit_semaphore.locked( ): # item is being updated from code rather than by user return val = float(item.text()) logger().info(f'Segment value changed: {val}') if item.column() == 0: self.gen_curve.segment_set_range(segment=item.row(), from_value=val) elif item.column() == 1: self.gen_curve.segment_set_range(segment=item.row(), to_value=val) elif item.column() == 2: self.gen_curve.segment_update_data(segment=item.row(), data={'PHIN': val}) self.populate_segments()
def item_changed(self, Qitem: QTableWidgetItem): if not Qitem.text() or Qitem.column() == 0: return try: int(Qitem.text()) except ValueError: Msgbox = QMessageBox() Msgbox.setText("Error, Pixel ID must be an integer!") Msgbox.exec() Qitem.setData(Qt.DisplayRole, None)
def _on_diagnose_change(self, item: QTableWidgetItem): column = item.column() row = item.row() poi_id = self.multiPOIList.item(row, self.POIID_COLUMN).text() content = item.text() original_content = self.multi_poi.am_obj.get_content_by_id_column(poi_id, column) _l.debug('updaing %s, content: %s, original: %s', poi_id, content, original_content) if not self._is_identical(content, original_content): updated_poi = self.multi_poi.update_poi(poi_id, column, content) self._diagnose_handler.submit_updated_poi(poi_id, updated_poi)
def change_rate(self, item: QTableWidgetItem): """ Обновляет расход материала в услуге и расчитывает себестоимость. :param item: QTableWidgetItem """ if item.column() == 2 and float(item.text()) != 0: rate = float(item.text()) storage_item = self.service_storage[ self.service_ui.left_table.item(item.row(), 0).text()] if storage_item.rate == rate: return total = self.service_ui.left_table.item( self.service_ui.left_table.rowCount() - 1, 3) amount = float(total.text()) amount -= storage_item.rate_price storage_item.rate = rate cost = self.service_ui.left_table.item(item.row(), 3) cost.setText(str(storage_item.rate_price)) amount += storage_item.rate_price total.setText(str(amount))