프로그래밍/파이썬

파이썬 Python QT PyQt QRadioButton

에이티에스 2023. 6. 22. 09:52
728x90

PyQt QRadioButton 소개

QRadioButton 클래스를 사용하면 레이블이 있는 라디오 버튼을 만들 수 있습니다.

QRadioButton(text[, parent=None])Code language: Python (python)

라디오 단추에는 두 가지 상태가 있습니다.

  • ON(선택됨)
  • OFF(선택 취소됨)

일반적으로 그룹에서 라디오 단추를 사용합니다. 라디오 단추 그룹은 여러 선택 항목 중 하나를 제공합니다.

라디오 단추 그룹에서는 한 번에 하나의 라디오 단추만 확인할 수 있습니다. 다른 라디오 버튼을 선택하면 이전에 선택한 버튼이 선택 취소됩니다.

 

기본적으로 라디오 단추는 자동 배타적입니다. 또한 동일한 부모 위젯에 속하는 라디오 버튼은 자동 배타적입니다.

여러 개의 전용 라디오 버튼을 만들려면 여러 QButtonGroup 위젯으로 그룹화할 수 있습니다.

라디오 버튼은 스위치를 켜거나 끌 때 toggled()신호를 방출합니다.

라디오 버튼의 상태가 바뀔 때 액션을 트리거하려면 슬롯을 toggled() 신호에 연결할 수 있습니다.

슬롯 내부에서 isChecked() 방법을 사용하여 라디오 버튼이 켜져 있는지 꺼져 있는지 확인할 수 있습니다.

PyQt QRadioButton 예제

다음 프로그램에서는 라디오 단추 그룹을 만드는 방법을 보여 줍니다.

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QRadioButton, QLabel, QVBoxLayout
from PyQt6.QtCore import Qt


class MainWindow(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.setWindowTitle('PyQt QRadioButton')
        self.setMinimumWidth(300)

        # create a grid layout
        layout = QVBoxLayout()
        self.setLayout(layout)

        label = QLabel('Please select a platform:', self)

        rb_android = QRadioButton('Android', self)
        rb_android.toggled.connect(self.update)

        rb_ios = QRadioButton('iOS', self)
        rb_ios.toggled.connect(self.update)

        rb_windows = QRadioButton('Windows', self)
        rb_windows.toggled.connect(self.update)

        self.result_label = QLabel('', self)

        layout.addWidget(label)
        layout.addWidget(rb_android)
        layout.addWidget(rb_ios)
        layout.addWidget(rb_windows)
        layout.addWidget(self.result_label)

        # show the window
        self.show()

    def update(self):
        # get the radio button the send the signal
        rb = self.sender()

        # check if the radio button is checked
        if rb.isChecked():
            self.result_label.setText(f'You selected {rb.text()}')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    sys.exit(app.exec())Code language: Python (python)

출력:

 

 

작동 방식.

먼저 세 개의 라디오 버튼을 만들고 toggled() 업데이트 메서드를 각 버튼의 신호에 연결합니다.

rb_android = QRadioButton('Android', self)
rb_android.toggled.connect(self.update)

rb_ios = QRadioButton('iOS', self)
rb_ios.toggled.connect(self.update)

rb_windows = QRadioButton('Windows', self)
rb_windows.toggled.connect(self.update)Code language: Python (python)

둘째, 어떤 라디오 버튼이 선택되었는지 표시하는 결과 레이블을 만듭니다.

self.result_label = QLabel('', self)Code language: Python (python)

다른 메서드에서 result_label를 참조해야 하기 때문에 클래스의 속성으로 만듭니다.

 

셋째, update() 메소드를 정의하십시오.

def update(self):
    # get the radio button the send the signal
    rb = self.sender()

    # check if the radio button is checked
    if rb.isChecked():
        self.result_label.setText(f'You selected {rb.text()}')Code language: Python (python)

방법에서 :update()

  1. 토글된 신호를 보낸 라디오 버튼을 찾습니다.
  2. isChecked() 메서드를 호출하여 라디오 버튼이 선택되어 있는지 확인합니다.
  3. 결과 레이블을 업데이트합니다. 라디오 버튼의 텍스트 레이블을 얻으려면 이 text() 방법을 사용합니다.

요약

  • PyQt QRadioButton클래스를 사용하여 라디오 버튼을 만듭니다.
  • 동일한 부모에 속하는 라디오 단추는 자동 배타적 그룹에 속합니다.
  • toggled()신호에 연결하여 라디오 버튼이 켜지거나 꺼질 때 동작을 트리거합니다.
  • isChecked() 메서드를 사용하여 라디오 버튼이 켜져 있는지 확인합니다.
728x90
반응형
그리드형