我有这个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
答案 0 :(得分:1)
您好像可以使用基类QAbstractSpinBox,keyboardTracking
的参数如果将其设置为false,则在按Enter键之前不会发出valueChanged信号,否则窗口小部件会失去焦点。
来自Qt docs的描述:
如果启用了键盘跟踪(默认设置),则旋转框会发出 valueChanged()信号从新输入的值 键盘。
E.g。当用户通过键入6,0和0输入值600时, spinbox分别发出值为6,60和600的3个信号。
如果禁用键盘跟踪,则spinbox不会发出 键入时valueChanged()信号。它会在以后发出信号 当键盘焦点丢失或其他时,按下返回键 使用旋转箱功能,例如,按箭头键。
pyqt docs在这里通常没用。