首页 > 解决方案 > QDoubleSpinBox 接受点和逗号作为小数分隔符

问题描述

我需要一个可以接受点和逗号作为小数分隔符的旋转框。

我更改了区域设置: self.setLocale(QLocale(QLocale.C))

因此,我的 spinbox 接受一个点作为小数分隔符。按下逗号按钮时,屏幕上也会显示一个逗号,但在编辑后它会消失。

我重新定义了 keyPressEvent。现在,当我使用逗号按钮时,它会模拟点键并调用 QDoubleSpinBox 的原始 keyPressEvent。但是旋转框屏幕上什么也没有发生,我不知道我错过了什么。

有没有人看到问题?

class MyDoubleSpinBox(QDoubleSpinBox):

    def __init__(self):

        super().__init__()

        self.setValue(0.00)
        self.setSingleStep(0.01)
        self.setMaximum(1000)

    def keyPressEvent(self, in_event):  # 46 = dot; 44 = comma:
        if in_event.key() == 44:
            self.keyPressEvent(QKeyEvent(QEvent.KeyPress, 46, Qt.NoModifier, 0, 0, 0))

        else:
            print(in_event.key()) # it's working (46 even if I press comma)
            QDoubleSpinBox.keyPressEvent(self, in_event)

标签: pythonpython-3.xpyqtpyqt5qdoublespinbox

解决方案


推荐阅读