Как можно сделать символ в pyQT5 неудаляемым?

Как можно предотвратить удаление разделителя (запятой) между числами в ячейках таблицы, заполняемых трапециевидными числами?
  • 31 марта 2024 г. 12:40
Ответы на вопрос 1
Чтобы сделать символ в pyQt5 неудаляемым, можно установить свойство "readOnly" для соответствующего виджета, например, для QLineEdit:

```python
lineEdit = QtWidgets.QLineEdit()
lineEdit.setReadOnly(True)
```

Чтобы предотвратить удаление разделителя между числами в ячейках таблицы, можно использовать делегат в PyQt5 для ячеек таблицы. В качестве примера можно создать свой класс делегата, который будет обрабатывать события редактирования ячеек и предотвращать удаление разделителя:

```python
class NoDeleteDelegate(QtWidgets.QStyledItemDelegate):
    def createEditor(self, parent, option, index):
        editor = super(NoDeleteDelegate, self).createEditor(parent, option, index)
        if isinstance(editor, QtWidgets.QLineEdit):
            editor.setTextMargins(editor.textMargins().left(), editor.textMargins().top(), editor.textMargins().right() + 10, editor.textMargins().bottom())
        return editor

    def setModelData(self, editor, model, index):
        text = editor.text()
        if model.data(index, QtCore.Qt.EditRole) and text and text[-1].isdigit() and model.data(index, QtCore.Qt.EditRole)[-1].isdigit():
            text = model.data(index, QtCore.Qt.EditRole) + ',' + text[-1]
        model.setData(index, text, QtCore.Qt.EditRole)
```

Затем установите этот делегат для таблицы:

```python
tableView.setItemDelegate(NoDeleteDelegate())
```

Этот делегат предотвратит удаление разделителя между числами в ячейках таблицы, добавляя запятую при вводе нового символа числа.
Похожие вопросы