QDoubleSpinBoxに問題があります。 「バックスペース」キーの動作を編集する方法は、サフィックスのサイズによって異なります。 "m"を接尾辞として設定した場合、スピンボックスの最後にカーソルを合わせて "backspace"を押すと、カーソルが "m"接尾辞の上にジャンプし、さらに "backspaces"で編集できます。 接尾辞を "mm"または任意の二重文字に設定した場合、カーソルが何回押してもスピンボックスの最後にカーソルが残ります。QDoubleSpinBoxの "backspace"キーの編集動作
私は、「検証」メソッドに何が来るのかをデバッグしようとした、と独特の結果だ:カーソルが「0,00m」の末尾にある一方で、「バックスペース」が押された場合 を、「0,00m」を受信検証。 カーソルが "0,00_m"の最後にあるときに "バックスペース"が押されたときvalidateは "0,00__m"を受け取ります カーソルが "0,00_mm"の終わりにあるときに "バックスペース"を押すと、 0,00_m_mm "
このような現象の原因は何ですか?どのように克服できますか?それはキーイベント処理に来るとき
# coding=utf-8
from PyQt5 import QtWidgets
class SpinBox(QtWidgets.QDoubleSpinBox):
def __init__(self):
super().__init__()
def validate(self, text, index):
res = super().validate(text, index)
print(text, res, self.text())
return res
if __name__ == "__main__":
q_app = QtWidgets.QApplication([])
sb = SpinBox()
sb.setSuffix(" m")
sb.show()
q_app.exec_()