PyQt5 QDoubleValidator 不允许写点分隔符:x.y

PyQt5 QDoubleValidator don't allow to write dot separators : x.y

大家好, 我正在尝试开发一个 GUI 来使用 PyQt5 模块 .

修改 Pandas DataFrame 并进行计算

我实际上可以显示我的 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 之间的数字,这很好,我可以用“,”分隔符写 flaot,例如“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