파이썬(Python)/PySide

[Python] PySide 라벨 키보드 이벤트 (Lable, Keyboard, Event)

끄적끄적아무거나 2022. 12. 1. 09:00
반응형

 

목차

     

     

     

     

     

    파이썬 PySide 라벨 키보드 이벤트 (Lable, Keyboard, Event)

    앞서 포스트에서 마우스(Mouse) 클릭 별 이벤트 발생 시 특정 함수나 기능을 실행시키는 방법에 대해 알아보았습니다. 이번 포스트에서는 라벨(Label)에 텍스트 입력(Text Input) 창을 만들고 텍스트에 입력창에 텍스트를 입력 시 해당 입력을 즉각적으로 표기하는 방법에 대해 알아보겠습니다.

     

    예제를 통해 쉽게 알아보겠습니다.

     

     

    예제 코드>>

    from PySide6.QtWidgets import QApplication, QMainWindow, QLabel, QLineEdit, QVBoxLayout, QWidget
    from PySide6.QtCore import QSize
    import sys
    
    
    class Qt_Ex(QMainWindow):
        def __init__(self):
            super().__init__()
    
            self.setWindowTitle("Qt Example")
            self.setFixedSize(QSize(250, 100))
            self.label0 = QLabel("키보드 입력 이벤트")
            self.setCentralWidget(self.label0)
    
            self.label1 = QLabel()
            self.input = QLineEdit()
            self.input.textChanged.connect(self.label1.setText)
    
            layout = QVBoxLayout()
            layout.addWidget(self.input)
            layout.addWidget(self.label1)
            layout.addWidget(self.label0)
    
            container = QWidget()
            container.setLayout(layout)
    
            self.setCentralWidget(container)
    
    
    app = QApplication(sys.argv)
    
    window = Qt_Ex()
    window.show()
    
    app.exec()

     

     

     

    결과>>

    위와 같이 hello world 입력이 반영됨을 알 수 있습니다. 

     

     

     

    주석>>

    PySide의 구성은 이전에 포스트에서 많이 설명했으니 생략하고 라벨 텍스트 관련 내용에 대해서만 주석을 달겠습니다. 

            self.label1 = QLabel()
            self.input = QLineEdit()
            self.input.textChanged.connect(self.label1.setText)

    라벨을 QLabel 함수로 객체 생성을 해주고 QLineEdit으로 텍스트 입력창을 만들어 줍니다. 그리고 input의 객체에서 텍스트 값이 변할때 이를 textChanged 함수를 사용해서 인식해줍니다.

     

     

     

     

            layout = QVBoxLayout()
            layout.addWidget(self.input)
            layout.addWidget(self.label1)
            layout.addWidget(self.label0)

    QVBoxLayout 함수를 객체화 해줍니다. 레이어 배치는 Vertical (수직 방향)으로 하나씩 배치 해줍니다.

     

     

     

            container = QWidget()
            container.setLayout(layout)
    
            self.setCentralWidget(container)

    앞서 작성한 라벨이나 텍스트를 QWidget으로 container에 넣어주고 최종적으로 배치를 완료 합니다.

     

    레이어나 Application의 위치 배치는 추후에 상세하게 남기도록 하겟습니다.

    반응형