2017-09-06 2 views
1

사용자가 인증 코드를 입력하는 qlineedit을 가지고 있습니다. 대시가 자동으로 추가되는 창을 활성화 할 때와 마찬가지로이 숫자를 5 자 이후에 자동으로 공백으로 배치 할 수 있기를 원합니다. 라인의 수는 더 나은입니다 변수입니다 경우PyQt 자동 공간 qlineedit 문자

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    le = QLineEdit() 
    le.setInputMask(("ddddd "*4)[:-1]) 
    le.show() 
    sys.exit(app.exec_()) 

: 자릿수가 최선의 선택을 고정하는 경우 예를

12345 67890 12345 67890 

답변

2

를 들어 는 귀하의 경우, setInputMask()을 사용하는 것입니다 textChanged 신호를 사용하고 필요할 때마다 추가하는 것 외에 다음에 보여주는 것처럼 QValidator를 작성할 수 있습니다.

class LineEdit(QLineEdit): 
    def __init__(self, *args, **kwargs): 
     QLineEdit.__init__(self, *args, **kwargs) 
     self.textChanged.connect(self.onTextChanged) 
     self.setValidator(QRegExpValidator(QRegExp("(\\d+)"))) 

    def onTextChanged(self, text): 
     if len(text) % 6 == 5: 
      self.setText(self.text()+" ") 


if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    le = LineEdit() 
    le.show() 
    sys.exit(app.exec_()) 
+0

매우 좋습니다. 나는'self.setValidator (QRegExpValidator (QRegExp ("(\\ d +)")))'부분을 이해하지 못한다. – Eduardo

+1

아이디어는 숫자를 받아들이도록 입력의 유효성을 검사하는 것입니다. Qt는 기본적으로 QDoubleValidator, QIntValidator 및 QRegExpValidator 인 3 개의 유효성 검사기를 제공합니다.이 경우 텍스트 내에 숫자가 있지만 전체 텍스트는 숫자가 아니지만 우리는 QRegExpValidator를 사용하기 때문에 문자별로 더 가치있는 문자가됩니다. 정규 표현식을 사용하여 유효성을 검사합니다 (이 표현식에는 특정 구문이 있지만 그 안에 숫자가 더 많을 것으로 예상된다는 것을 나타내는 dy가 설정되어 있음을 나타냅니다). 한 문자 이상 미국보다). :피 – eyllanesc