我在pyqt4中使用python3.4工作,我想验证单元格中的文本在引入时是否为浮点数。我该怎么做?

最佳答案

您有两个选择。

您可以创建一个QItemDelegate并覆盖createEditorsetEditorDatasetModelData来控制与它们一起显示的小部件以编辑数据。您可以根据需要使用验证器创建QLineEdit,但是如果他们只能输入数字,则可能应该使用QSpinBoxQDoubleSpinBox,它们仅允许整数和浮点数。或者,您可以让他们输入所需的内容,然后在setModelData函数中忽略所有输入的不是有效数字的值。

class MyDelegate(QtGui.QItemDelegate):

    def createEditor(self, parent, option, index):
        return QtGui.QSpinBox(parent)


delegate = MyDelegate()
table.setItemDelegate(delegate)


或者,如果表中的项目已经有数字,则可以使用一个稍微简单的解决方案,只需为该项目的EditData角色分配一个整数或浮点数即可。 Qt将注意到类的类型,并自动为您构造一个QSpinBoxQDoubleSpinBox

item = QTableWidgetItem()
item.setData(QtCore.Qt.EditRole, 5)

10-08 08:50