본문 바로가기
Python Library/PySide

[PySide] 위젯 연결하기

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

위젯 연결하기

 

위젯에서 신호가 발생하면 Python 메서드가 호출되고 신호에서 데이터를 수신한다. 그러나 신호를 처리하기 위해 항상 Python 함수를 사용할 필요는 없다. Qt 위젯을 서로 직접 연결할 수도 있다.

 

다음 예에서는 QLabel 창에 QLineEdit 위젯과 위젯을 추가한다. \\__init__라인에서 textChanged 신호를 QLabel 메소드의 setText로 편집한다. 이제 텍스트가 변경될 때마다 QLineEdit과 QLabel에 해당 setText 메서드가 수신된다.

 

import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QLabel, QLineEdit, QVBoxLayout, QWidget


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

        self.setWindowTitle("My App")

        self.label = QLabel()

        self.input = QLineEdit()
        self.input.textChanged.connect(self.label.setText)

        layout = QVBoxLayout()
        layout.addWidget(self.input)
        layout.addWidget(self.label)

        container = QWidget()
        container.setLayout(layout)

        self.setCentralWidget(container)


app = QApplication(sys.argv)

window = MainWindow()
window.show()

app.exec_()

 

입력을 레이블에 연결하려면 입력과 레이블을 모두 정의해야 한다. 이 코드는 두 개의 위젯을 레이아웃에 추가하고 창에 설정한다.

 

입력에 입력된 모든 텍스트는 레이블에 즉시 나타난다.

 

대부분의 Qt 위젯에는 사용 가능한 슬롯 이 있으며, 여기에는 허용하는 것과 동일한 유형을 방출하는 모든 신호를 연결할 수 있다. 위젯 문서에는 "공개 슬롯" 아래에 나열된 각 위젯에 대한 슬롯이 있다. 그 예는 https://doc.qt.io/qt-5/qlabel.html#public-slots[QLabel]에서 참조하면 된다.

728x90
반응형
LIST

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

[PySide] Context menus  (0) 2022.06.13
[PySide] 이벤트  (0) 2022.06.13
[PySide] 인터페이스 변경  (0) 2022.06.13
[PySide] 신호 및 슬롯  (0) 2022.05.23
[PySide] 창 및 위젯 크기 조정  (0) 2022.05.23