问题描述
大家好, 我正在尝试开发一个 GUI 来使用 PyQt5 模块修改和计算 Pandas DataFrames。
我实际上可以显示我的 DataFrame,并编辑或不编辑特定列。它显示在 QTableWidget 中。
我尝试使用 QDoubleValidator 实现一个 QItemDelagate 以仅在列中写入特定数字。
这是我的功能:
class FloatDelegate(QItemDelegate):
def __init__(self,parent=None):
super().__init__()
def createEditor(self,parent,option,index):
editor = QLineEdit(parent)
editor.setValidator(QDoubleValidator(0.0000,1.0000,4))
return editor
.....
#data check float
dataCheckDelege = FloatDelegate(self)
self.setItemDelegateForColumn(3,dataCheckDelege)
我只能写 0 和 1 之间的数字,这很好,我可以用“,”分隔符写浮标,比如“0,5”。
但是我不能使用 " . " SEParaTOR,我不能写“0.5”,这就是我需要写我的数据的方式。
我该如何处理?
解决方法
这很可能是由于您的验证器的语言环境。验证器使用其语言环境来确定应如何解释数字。如果您没有明确设置验证器的语言环境,则使用您系统的语言环境。如果碰巧设置为使用逗号作为小数点的语言环境,您的验证器也会这样做。为了解决这个问题,您可以将验证器的语言环境设置为使用点作为小数点的语言环境,例如QLocale("en_US")
:
def createEditor(self,parent,option,index):
editor = QLineEdit(parent)
validator = QDoubleValidator(0.0,1.0,4)
validator.setLocale(QtCore.QLocale("en_US")
editor.setValidator(validator)
return editor