Я работаю с pyqt4
в python3.4
. Я хочу проверить, является ли текст в ячейке числом с плавающей запятой, когда он вводится. Как мне это сделать?
Как проверить ячейку в QTableWidget?
Ответы (1)
У вас есть два варианта.
Вы можете создать QItemDelegate
и переопределить createEditor
, setEditorData
и setModelData
, чтобы управлять виджетом, с которым они представлены, для редактирования данных. Вы можете создать QLineEdit
с валидатором, если хотите, но если они могут вводить только числа, вам, вероятно, следует просто использовать QSpinBox
или QDoubleSpinBox
, которые допускают только целые числа и числа с плавающей запятой. В качестве альтернативы вы можете позволить им вводить все, что они хотят, а затем в функции setModelData
просто игнорировать любые введенные значения, которые не являются допустимыми числами.
class MyDelegate(QtGui.QItemDelegate):
def createEditor(self, parent, option, index):
return QtGui.QSpinBox(parent)
delegate = MyDelegate()
table.setItemDelegate(delegate)
Или, немного более простое решение, если элементы в вашей таблице уже имеют числа, просто назначьте целое число или число с плавающей запятой роли EditData
для элемента. Qt
заметит тип класса и автоматически создаст для вас QSpinBox
или QDoubleSpinBox
.
item = QTableWidgetItem()
item.setData(QtCore.Qt.EditRole, 5)
QItemDelegate
и работает, но мне нужно число с плавающей запятой, и это позволяет мне работать только с целым числом
- person Reinier Hernández; 04.06.2016
QDoubleSpinBox
, если вы хотите работать с поплавками
- person Brendan Abel; 04.06.2016