def editcell(self,item:QtWidgets.QTableWidgetItem): col = self.db.getcolumns()[item.column()] row = item.row() + 1 val = item.text() print('bpvtytyj ',row,col,val) self.db.edit(value=val,idvalue=row,column=col,idcolumn='rowid') self.ui.tableWidget.resizeColumnsToContents()
def __onTradeRouteTableWidgetItemClicked(self, item: QTableWidgetItem) -> None: '''If a trade route table widget item is clicked, check it and call the presenter to display it''' checked: bool = False if item.checkState() == QtCore.Qt.Checked: checked = True self.__presenter.onTradeRouteChecked(item.row(), checked)
def _edit_input_cell_done(self, item: QTableWidgetItem, checkable_widget: QLineEdit, table: QTableWidget): old_value = item.text() new_value = checkable_widget.text() table.removeCellWidget(item.row(), item.column()) if item.column() == BinningColumns.SBinName(): if not self._bin_container.does_bin_exist(new_value): self.parent._update_feedback('bin is already defined') return self._bin_container.update_bin_name(old_value, new_value) item.setText(new_value) self.parent._update_binning_tree_items() return elif item.column() == BinningColumns.SBin(): if self._bin_container.does_bin_num_exist(new_value): self.parent._update_feedback('bin number is already occupied') return try: sbin = int(new_value) if sbin in range(ALARM_BIN_MIN, ALARM_BIN_MAX): self.parent._update_feedback(f'range {(ALARM_BIN_MIN, ALARM_BIN_MAX)} is reserved for internal use') item.setText(old_value) group_item = self.binning_table.item(item.row(), BinningColumns.SBinGroup()) if sbin in range(1, 10): group_item.setText(BINGROUPS[0]) else: group_item.setText(BINGROUPS[1]) self.parent._verify() except Exception: self._update_feedback('soft bin must be of type integral') item.setText(old_value) return elif item.column() == BinningColumns.SBinGroup(): BINGROUPS.append(new_value) item.setText(new_value) self._update_row_content_binning_table(item) self.parent._verify()
def _double_clicked(self, item: QtWidgets.QTableWidgetItem): row = item.row() start = self.tableWidget.item(row, 0).text() end = self.tableWidget.item(row, 1).text() d = IntervalTrainDialog(self.graph, self) d.comboStart.setCurrentText(start) d.comboEnd.setCurrentText(end) d.exec_()
def _create_input_cell(self, table: QTableWidget, item: QTableWidgetItem): column = item.column() row = item.row() checkable_widget = QLineEdit() checkable_widget.setText(item.text()) table.setCellWidget(row, column, checkable_widget) checkable_widget.editingFinished.connect(lambda: self._edit_input_cell_done(item, checkable_widget, table))
def _show_detail(self, item: QtWidgets.QTableWidgetItem = None): """ 显示各个车次与计算标尺的比较. 暂不考虑排序。 """ if not isinstance(item, QtWidgets.QTableWidgetItem): item = self.previewTable.currentItem() i = item.row() fz, dz = self.previewTable.item(i, 0).data(Qt.UserRole) tw = QtWidgets.QTableWidget() tw.setWindowTitle(f'计算细节*{fz}{self.blocker()}{dz}') tw.setEditTriggers(tw.NoEditTriggers) tw.setColumnCount(7) tw.setHorizontalHeaderLabels( ['车次', '附加', '标准', '实际', '差时', '绝对值', '标记']) header: QtWidgets.QHeaderView = tw.horizontalHeader() header.setSectionsClickable(True) header.sectionClicked.connect(tw.sortByColumn) header.setSortIndicatorShown(True) for i, s in enumerate((120, 60, 80, 80, 80, 80, 90)): tw.setColumnWidth(i, s) TWI = QtWidgets.QTableWidgetItem tw.setRowCount(len(self.resultData[(fz, dz)])) node = self.resultDict[(fz, dz)] for row, (train, (sec, tp)) in enumerate(self.resultData[(fz, dz)].items()): std = self.__stdInterval(tp, *node) tw.setRowHeight(row, self.graph.UIConfigData()['table_row_height']) tw.setItem(row, 0, TWI(train.fullCheci())) tw.setItem(row, 1, TWI(self.__type2str(tp))) tw.setItem(row, 2, TWI(Train.sec2strmin(std))) tw.setItem(row, 3, TWI(Train.sec2strmin(sec))) it = TWI() it.setData(Qt.DisplayRole, sec - std) tw.setItem(row, 4, it) it = TWI() it.setData(Qt.DisplayRole, abs(sec - std)) tw.setItem(row, 5, it) it = TWI() if self.radioMean.isChecked(): # 均值模式,标记截断数据 if self.resultFt[(fz, dz)][tp].get(sec, None) is None: it.setText('截断') else: # 众数模式,标记采信数据和类型弃用数据 if not self.resultUsed[(fz, dz)][tp][2]: it.setText('类型弃用') elif sec == self.resultUsed[(fz, dz)][tp][0]: it.setText('采信') tw.setItem(row, 6, it) dialog = DialogAdapter(tw, self) dialog.resize(700, 600) dialog.show()
def _get_item(self, item: QtWidgets.QTableWidgetItem): row = item.row() index = len(self.pix_set) - 1 - row filename = self.pix_set[index][0] opt = self.pix_set[index][1] pix = self.pix_set[index][2] self.Signal_scene.emit(filename, pix) return item.text() pass
def check_number_value(self, item: QTableWidgetItem): """A method that makes sure that the entered value can be turned to float. If not, change the current value to 0.""" if item is None: self.log('Item (%s, %s) is None' %(item.row(), item.column())) elif item.column() < 2: try: float(item.text()) except ValueError as e: self.log('Invalid value "%s" entered, value changed to 0.' %item.text()) item.setText('0') finally: if None not in (self.dlg.tableWidget.item(item.row(), 0), self.dlg.tableWidget.item(item.row(), 1), self.dlg.tableWidget.item(item.row(), 2)) and ' - ' in self.dlg.tableWidget.item(item.row(), 2).text(): legend = self.dlg.tableWidget.item(item.row(), 2).text() legend_split = legend.split(' - ') legend_split[item.column()] = item.text() legend = ' - '.join(legend_split) self.dlg.tableWidget.item(item.row(), 2).setText(legend)
def item_changed(self, item: QTableWidgetItem): """Update the planner to mark whether or not the assignment is completed """ assignment_id = int(self.tablewidget_assignments.cellWidget(item.row(), 1).get_data()) # If the checkbox is checked / Unchecked if item.column() == 0: self.app.planner.update_assignment(assignment_id, "completed", int(item.checkState() == 2)) self.app.refresh()
def table_click(self, item: QTableWidgetItem): if self.flag_open: item = self.tableWidget.item(item.row(), 0) txt = item.text() try: func_filter = getattr(__import__(txt, fromlist=[txt]), txt) except ModuleNotFoundError: QErrorMessage(self).showMessage("Module is crushed!") return self.use_filter(func_filter)
def _double_clicked(self,item:QtWidgets.QTableWidgetItem): r = item.row() dct = self.train.timetable[r//2] if self.train.stationStoppedOrStartEnd(dct): dct['business']=not self.train.stationBusiness(dct) row=r-(r%2) brush = self.itemBrush(dct,self.train) self.tableWidget.item(row,0).setForeground(brush) self.tableWidget.item(row,2).setForeground(brush) self.tableWidget.item(row+1,2).setForeground(brush)
def _table_item_changed(self,item:QtWidgets.QTableWidgetItem): if item.column() == 0: circuit:Circuit = self.tableWidget.item(item.row(),1).data(Qt.UserRole) if item.checkState() == Qt.Checked: for node in circuit.nodes(): if node.train() is not None: node.train().highlightItems(containLink=True) else: for node in circuit.nodes(): if node.train() is not None: node.train().unHighlightItems(containLink=True)
def _item_changed(self, item: QtWidgets.QTableWidgetItem): """ 2019.10.21添加 """ if item is None or item.column() != 4: return train = self.trainTable.item(item.row(), 0).data(-1) if train is None: return on = bool(item.checkState()) train.setIsShow(on) self.trainShowChanged.emit(train, on)
def show_debt_info(self, item: QTableWidgetItem): if item is not None: row = item.row() id = self.monitor_table.item(row, 0).text() debt = self.dbm.get_debts(int(id)) old_amount = debt.amount di = DebtInfo(self.dbm, debt) di.exec_() if di.amount != old_amount: self.update_statistic() self.monitor_table.item(row, 3).setText(str(di.amount))
def _handle_item_edit(self, item: QtWidgets.QTableWidgetItem): if not item.column() == 1: return current_specifications = copy.copy( self._lobby_view.lobby.game_options['pool_specification']) current_specifications[item.row()]['amount'] = int(item.data(0)) self._lobby_view.lobby_model.set_options( self._lobby_view.lobby.name, {'pool_specification': current_specifications}, )
def insertItems(self): added = [] for path in self.pathList: if path.objPath in added: continue curRow = len(added) if len(path.objPath) > 92: text = path.objPath[0:92] + '...' else: text = path.objPath pItem = QTableWidgetItem(text) pItem.setData(Qt.UserRole, path.objPath) pItem.setToolTip(path.objPath) pItem.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled) checkBoxN = QCheckBox(self) checkBoxS = QCheckBox(self) checkBoxR = QCheckBox(self) self.ui.tableWidget.setItem(curRow, self.COL_PATH, pItem) self.ui.tableWidget.setCellWidget(curRow, self.COL_NOPIN, checkBoxN) self.ui.tableWidget.setCellWidget(curRow, self.COL_SPIN, checkBoxS) self.ui.tableWidget.setCellWidget(curRow, self.COL_RPIN, checkBoxR) checkBoxN.stateChanged.connect( functools.partial(self.noPinChecked, pItem.row())) checkBoxS.stateChanged.connect( functools.partial(self.pinSingleChecked, pItem.row())) checkBoxR.stateChanged.connect( functools.partial(self.pinRecursiveChecked, pItem.row())) checkBoxS.setCheckState(Qt.Checked) added.append(path.objPath) self.ui.tableWidget.setRowCount(len(added))
def write_variable(self, a_item: QtWidgets.QTableWidgetItem): try: if self.netvars.connected(): variable_number = int( self.ui.variables_table.item(a_item.row(), self.Column.NUMBER).text()) try: variable_value = utils.parse_input(a_item.text()) self.netvars.write_variable(variable_number, variable_value) except ValueError: pass except Exception as err: logging.debug(utils.exception_handler(err))
def _table_item_changed(self, item: QtWidgets.QTableWidgetItem): if self.updating: return # print("currentWidget::table_item_changed",item.text(),item.row(),item.column()) row = item.row() if item.column() == 3: # 营业列变化 itemStation = self.timeTable.item(row, 0) if item.checkState() == Qt.Checked: itemStation.setForeground(QtGui.QBrush(Qt.red)) elif self.timeTable.cellWidget( row, 1).time() != self.timeTable.cellWidget(row, 2).time(): itemStation.setForeground(QtGui.QBrush(Qt.blue)) else: itemStation.setForeground(QtGui.QBrush(Qt.black))
def set_value_to_user(self, a_item: QtWidgets.QTableWidgetItem): self.ui.limits_table.blockSignals(True) try: if a_item.column() == ScaleLimitsDialog.Column.LIMIT: value_f = utils.parse_input(a_item.text()) signal_type = clb.SignalType( self.ui.limits_table.cellWidget( a_item.row(), ScaleLimitsDialog.Column.SIGNAL_TYPE).currentIndex()) units = clb.signal_type_to_units[signal_type] value_f = clb.bound_amplitude(value_f, signal_type) value_str = utils.value_to_user_with_units(units)(value_f) a_item.setText(value_str) a_item.setData(QtCore.Qt.UserRole, value_str) except ValueError: a_item.setText(a_item.data(QtCore.Qt.UserRole)) self.ui.limits_table.blockSignals(False)
def launch_app(self, item: QTableWidgetItem): path_item = self.fileTable.item(item.row(), FILE_LOCATION_INDEX) file_url = QUrl(path_item.text().replace("\\", "/")) print(file_url) QDesktopServices.openUrl(file_url)
def _item_double_clicked(self, item: QtWidgets.QTableWidgetItem): row = item.row() note = self.functions[row]['note'] text = f"{self.functions[row]['name']}的说明:\n" text += note QtWidgets.QMessageBox.information(self, '详细信息', text)