我使用python3.4
中的pyqt4
。当输入单元格时,我希望能够验证单元格中的文本是否为浮点数。如何实现?
我使用python3.4
中的pyqt4
。当输入单元格时,我希望能够验证单元格中的文本是否为浮点数。如何实现?
你有两种选择。
第一种,你可以创建一个 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
,它起作用了 但是 我需要一个浮点数,而它只允许我使用整数。 - Reinier HernándezQDoubleSpinBox
。 - Brendan Abelitem.setText(str(value))
会使项目在编辑时接受任何内容,并且不显示任何特殊小部件。 - bugmenot123