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
大家好, 我正在尝试开发一个 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