본문 바로가기

프로그래밍/PyQt5 GUI

20. QLineEdit

한 줄의 문자열을 입력하고 수정할 수 있도록 하는 위젯입니다. (QLineEdit 공식 문서) 참고

setEchoMode() 메서드를 이용하여, 입력 형식을 조정합니다. (예: setEchoMode(QLineEdit.Normal) 또는 setEchoMode(0))

 

echoMode 설정 상수

상수 설명
QLineEdit.Normal 0 입력된 문자를 표시합니다. (기본값)
QLineEdit.NoEcho 1 문자열을 표시하지 않습니다.
QLineEdit.Password 2 입력된 문자 대신 비밀번호 가림용 문자를 표시합니다.
QLineEdit.PasswordEchoOnEdit 3 입력할 때만 문자를 표시하고, 수정 중에는 다른 문자를 표시합니다.

maxLength() 메서드로 입력되는 텍스트의 길이를 제한할 수 있고, setValidator() 메서드로 입력되는 텍스트의 종류를 제한할 수도 있습니다. setText() 또는 insert() 메서드로, 텍스트를 편집할 수 있고, text() 메서드로 입력된 텍스트를 가져올 수 있습니다. 만약 echoMode에 의해 입력되는 텍스트와 표시되는 텍스트가 다르다면, displayText() 메서드로 표시되는 텍스트를 가져올 수도 있습니다.

setSelection(), selectAll() 메서드로 텍스트를 선택하거나, cut(), copy(), paste() 메서드를 통해 잘라내기, 복사하기, 붙여넣기 등의 동작을 수행할 수 있습니다. 또한 setAlignment() 메서드로 텍스트의 정렬을 설정할 수 있습니다.

텍스트가 변경되거나 커서가 움직일 때, textChanged(), cursorPositionChanged() 와 같은 시그널이 발생합니다.

자주 사용되는 시그널은 아래 표와 같습니다.

시그널 설명
cursorPositionChanged() 커서가 움직일 때 신호를 발생합니다.
editingFinished() 편집이 끝났을 때 (Return/Enter 버튼이 눌릴 때) 신호를 발생합니다.
returnPressed() Return/Enter 버튼이 눌릴 때 신호를 발생합니다.
selectionChanged() 선택 영역이 바뀔 때 신호를 발생합니다.
textChanged() 텍스트가 변경될 때 신호를 발생합니다.
textEdited() 텍스트가 편집될 때 신호를 발생합니다.

20-1 예제: ex19

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit

class MyApp(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.lbl = QLabel(self)
        self.lbl.move(60, 40)

        qle = QLineEdit(self)
        qle.move(60, 100)
        #qle.setEchoMode(QLineEdit.NoEcho)
        qle.textChanged[str].connect(self.onChanged)

        self.setWindowTitle('QLineEdit')
        self.setGeometry(300, 300, 300, 200)
        self.show()

    def onChanged(self, text):
        self.lbl.setText(text)
        self.lbl.adjustSize()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())

20-2 설명

QLineEdit 위젯에서 입력되고 수정되는 텍스트가 라벨에 즉시 표시됩니다.

qle.textChanged[str].connect(self.onChanged)

QLineEdit 의 인스턴스 qle에 텍스트가 바뀌면 textChanged[str]시그널이 발생하고 onChanged() 슬롯을 호출합니다.

def onChanged(self, text):
    self.lbl.setText(text)
    self.lbl.adjustSize()
  • onChanged() 메서드 안에서, 입력된 'text'를 setText() 메서드에서 매개변수로 입력 받아 텍스트를 출력합니다.
  • adjustSize() 메서드로 텍스트의 길이에 따라 라벨의 길이를 자동으로 조절해 줍니다.

20-3 결과

'프로그래밍 > PyQt5 GUI' 카테고리의 다른 글

22. QSlider & QDial  (0) 2021.07.26
21. QProgressBar  (0) 2021.07.26
19. QComboBox  (0) 2021.07.23
18. QRadioButton  (0) 2021.07.23
17. QCheckBox  (0) 2021.07.23