본문 바로가기
Python Library/PySide

[PySide] 위젯 (QLineEdit, QSpinBox, QDoubleSpinBox) (4)

by goatlab 2022. 6. 13.
728x90
반응형
SMALL

QLineEdit

 

QLineEdit 위젯은 사용자가 입력을 입력할 수 있는 간단한 한 줄 텍스트 편집 상자이다. 이것은 양식 필드 또는 유효한 입력의 제한된 목록이 없는 설정에 사용된다. 예를 들어, 이메일 주소나 컴퓨터 이름을 입력할 때 사용한다.

 

class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()

        self.setWindowTitle("My App")

        widget = QLineEdit()
        widget.setMaxLength(10)
        widget.setPlaceholderText("Enter your text")

        #widget.setReadOnly(True) # uncomment this to make readonly

        widget.returnPressed.connect(self.return_pressed)
        widget.selectionChanged.connect(self.selection_changed)
        widget.textChanged.connect(self.text_changed)
        widget.textEdited.connect(self.text_edited)

        self.setCentralWidget(widget)

    def return_pressed(self):
        print("Return pressed!")
        self.centralWidget().setText("BOOM!")

    def selection_changed(self):
        print("Selection changed")
        print(self.centralWidget().selectedText())

    def text_changed(self, s):
        print("Text changed...")
        print(s)

    def text_edited(self, s):
        print("Text edited...")
        print(s)

 

줄 편집에서 텍스트의 최대 길이를 설정할 수 있다.

 

QLineEdit에서 리턴을 눌렀을 때 (사용자에 의해), 사용자 선택이 변경되었을 때를 포함하여 다양한 편집 이벤트에 사용할 수 있는 많은 신호가 있다. 또한, 두 개의 편집 신호가 있다. 하나는 상자의 텍스트가 편집되었을 때를 위한 것이고 다른 하나는 변경되었을 때를 위한 것이다. 여기서 차이점은 사용자 편집과 프로그래밍 방식 변경 간의 차이이다. textEdited 신호는 사용자가 텍스트를 편집할 때만 전송된다.

 

또한 입력 마스크 를 사용하여 입력 유효성 검사를 수행하여 지원되는 문자와 위치를 정의할 수 있다. 이것은 다음과 같이 필드에 적용할 수 있다.

 

widget.setInputMask('000.000.000.000;_')

 

위는 마침표로 구분된 일련의 3자리 숫자를 허용하므로 IPv4 주소를 확인하는 데 사용할 수 있다.

 

QSpinBox / QDoubleSpinBox

 

QSpinBox는 값을 늘리거나 줄이는 화살표가 있는 작은 숫자 입력 상자를 제공한다. 관련 QDoubleSpinBox 위젯은 부동 소수점을 지원하는 반면 QSpinBox는 정수를 지원합니다.

 

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("My App")

        widget = QSpinBox()
        # Or: widget = QDoubleSpinBox()

        widget.setMinimum(-10)
        widget.setMaximum(3)
        # Or: widget.setRange(-10,3)

        widget.setPrefix("$")
        widget.setSuffix("c")
        widget.setSingleStep(3)  # Or e.g. 0.5 for QDoubleSpinBox
        widget.valueChanged.connect(self.value_changed)
        widget.textChanged.connect(self.value_changed_str)

        self.setCentralWidget(widget)

    def value_changed(self, i):
        print(i)

    def value_changed_str(self, s):
        print(s)

 

실행하면 숫자 입력 상자가 표시된다. 값은 사전 및 사후 수정 단위를 표시하며 +3 ~ -10 범위로 제한된다.

 

 

위의 데모 코드는 위젯에 사용할 수 있는 다양한 기능을 보여준다.

 

허용 가능한 값의 범위를 설정하려면 setMinimum 및 setMaximum를 사용하거나 setRange 둘 다를 동시에 설정하는 데 사용할 수 있다. 값 유형의 주석은 숫자에 추가할 수 있는 접두사와 접미사로 지원된다 (ex: .setPrefix및 .setSuffix각각을 사용하는 통화 표시 또는 단위의 경우).

 

위젯의 위쪽 및 아래쪽 화살표를 클릭하면 위젯의 값이 setSingleStep를 사용하여 설정할 수 있는 양만큼 증가하거나 감소한다. 이것은 위젯에 허용되는 값에 영향을 미치지 않는다.

 

QSpinBoxd와 QDoubleSpinBox 둘 다 값이 변경될 때마다 발생 하는 신호를 가지고 있다. 원시 valueChanged 신호는 숫자 값 (int 또는 float)을 보내는 반면 textChanged 값은 접두사와 접미사 문자를 모두 포함하는 문자열로 보낸다.

 

 

728x90
반응형
LIST

'Python Library > PySide' 카테고리의 다른 글

[PySide] 레이아웃 (Layouts) (1)  (0) 2022.06.23
[PySide] 위젯 (QSlider, QDial) (5)  (0) 2022.06.13
[PySide] 위젯 (QComboBox, QListWidget) (3)  (0) 2022.06.13
[PySide] 위젯 (QLabel, QCheckBox) (2)  (0) 2022.06.13
[PySide] 위젯 (1)  (0) 2022.06.13