在PyQt4中输入的每个数字后,如何在修改后的QSpinBox中移动光标?

时间:2014-06-04 07:02:14

标签: python cursor pyqt pyqt4 qspinbox

我有这个QSpinBox类,它被修改为显示3位数字(包括零)。

class ThreeDigitSpinBox(QtGui.QSpinBox):
    def __init__(self, *args):
        QtGui.QSpinBox.__init__(self, *args)

    def textFromValue(self, value):
        return "%03d" % value

我的问题是每次我选择并删除小部件上的现有值,并开始键入时,光标位置会弄乱我的密钥进入。

我们说我刚刚删除了QSpinBox中的所有内容。然后我打算键入价值" 314"。

(让我用" |"表示光标)

一旦我键入" 3",框显示" 003"将光标放在第一个0后面。" 0 | 03 "。

当我继续键入第二个数字" 1"时,SpinBox显示" 103"将光标放在第二个数字后面。 "的 10 | 3 "

由于光标的位置,我想要的数字" 314"从未进入过。相反,它显示" 1043"键入" 314"的全部3位数后。

如何确保将光标放在合适的位置以便我正确输入数字?

我使用的是带有Python 2.7.3(32位)的Windows XP SP3

1 个答案:

答案 0 :(得分:1)

您好像可以使用基类QAbstractSpinBoxkeyboardTracking

的参数

如果将其设置为false,则在按Enter键之前不会发出valueChanged信号,否则窗口小部件会失去焦点。

来自Qt docs的描述:

  

如果启用了键盘跟踪(默认设置),则旋转框会发出   valueChanged()信号从新输入的值   键盘。

     

E.g。当用户通过键入6,0和0输入值600时,   spinbox分别发出值为6,60和600的3个信号。

     

如果禁用键盘跟踪,则spinbox不会发出   键入时valueChanged()信号。它会在以后发出信号   当键盘焦点丢失或其他时,按下返回键   使用旋转箱功能,例如,按箭头键。

pyqt docs在这里通常没用。