PyQt5 튜토리얼-라디오 버튼

Jinku Hu 2023년1월30일
  1. PyQt5 QRadiobutton 기본 예
  2. PyQt5 QRadiobutton``setChecked 메소드
  3. PyQt5 QRadiobutton 그룹
PyQt5 튜토리얼-라디오 버튼

QRadiobuttonQCheckbox와 유사하지만 둘 이상의 선택권이 있지만 하나만 선택할 수 있다는 점이 다릅니다 한 번에. QRadiobutton 위젯에는 둥근 라디오 버튼과 함께 텍스트 레이블이 있습니다.

PyQt5 QRadiobutton 기본 예

아래 코드는 어느 도시에 거주하는지 묻고 사용자가 선택할 수있는 두 개의 라디오 버튼을 만듭니다. 사용자가 단일 선택 단추 중 하나를 선택하면 label 텍스트에가 표시됩니다.

import sys
from PyQt5.QtWidgets import (
    QLabel,
    QRadioButton,
    QPushButton,
    QVBoxLayout,
    QApplication,
    QWidget,
)


class basicRadiobuttonExample(QWidget):
    def __init__(self):
        super().__init__()

        self.init_ui()

    def init_ui(self):
        self.label = QLabel("Which city do you live in?")
        self.rbtn1 = QRadioButton("New York")
        self.rbtn2 = QRadioButton("Houston")
        self.label2 = QLabel("")

        self.rbtn1.toggled.connect(self.onClicked)
        self.rbtn2.toggled.connect(self.onClicked)

        layout = QVBoxLayout()
        layout.addWidget(self.label)
        layout.addWidget(self.rbtn1)
        layout.addWidget(self.rbtn2)
        layout.addWidget(self.label2)

        self.setGeometry(200, 200, 300, 150)

        self.setLayout(layout)
        self.setWindowTitle("PyQt5 Radio Button Example")

        self.show()

    def onClicked(self):
        radioBtn = self.sender()
        if radioBtn.isChecked():
            self.label2.setText("You live in " + radioBtn.text())


if __name__ == "__main__":
    app = QApplication(sys.argv)
    ex = basicRadiobuttonExample()
    sys.exit(app.exec_())

PyQt5 QRadiobutton 라디오 버튼 기본 예

self.rbtn1 = QRadioButton("New York")
self.rbtn2 = QRadioButton("Houston")

우리는 두 개의 라디오 버튼 rbtn1rbtn2 를 만듭니다. 괄호 안의 문자열은 둥근 라디오 버튼 옆에 표시되는 텍스트 레이블입니다.

self.rbtn1.toggled.connect(self.onClicked)
self.rbtn2.toggled.connect(self.onClicked)

버튼은 버튼을 선택하거나 선택을 해제 할 때마다 ‘토글 된’신호를 방출합니다. onClicked기능은 두 라디오 버튼의 toggled신호에 연결됩니다.

def onClicked(self):
    radioBtn = self.sender()
    if radioBtn.isChecked():
        self.label2.setText("You live in " + radioBtn.text())

self.sender()는 신호를 방출하는 위젯을 반환하고, 특정 버튼을 선택하면 QRadiobutton 위젯의 isChecked()메소드는 True이고, 그렇지 않으면 False를 반환합니다.

isChecked()메소드를 확인하여 라디오 버튼 그룹에서 선택된 특정 라디오 버튼을 얻을 수 있습니다.

PyQt5 QRadiobutton 라디오 버튼 기본 예

PyQt5 QRadiobutton``setChecked 메소드

QRadiobutton 은 초기화 후에 기본적으로 체크되지 않습니다. setChecked()메소드를 사용하여 초기화하는 동안 라디오 버튼의 기본 상태를 Checked로 변경할 수 있습니다.

예를 들어, 위의 예제 코드에 아래 행을 추가하여New York라디오 단추를 확인하십시오.

self.rbtn1.setChecked(True)

PyQt5 QRadiobutton 그룹

동일한 부모 창에있는 모든 라디오 버튼은 같은 그룹 내에 있으며 ‘전환 된’신호가 다른 기능에 연결되어 있어도 한 번에 하나의 라디오 버튼 만 선택할 수 있음을 의미합니다.

QtWidgetsQButtonGroup 은 선택된 버튼들을 하나로 묶고, 여러 개의 QButtonGroup 인스턴스를 생성하여 다른 그룹으로부터 라디오 버튼을 분리하여 동일한 부모 위젯에서 더 많은 버튼을 확인할 수 있습니다.

다음은 사용자에게 두 개의 라디오 버튼 그룹에서 도시와 주를 모두 선택하도록 요청하는 예를 보여줍니다.

import sys
from PyQt5.QtWidgets import (
    QLabel,
    QRadioButton,
    QPushButton,
    QVBoxLayout,
    QApplication,
    QWidget,
    QButtonGroup,
)


class basicRadiobuttonExample(QWidget):
    def __init__(self):
        super().__init__()

        self.init_ui()

    def init_ui(self):
        self.label = QLabel("Which city do you live in?")
        self.rbtn1 = QRadioButton("New York")
        self.rbtn2 = QRadioButton("Houston")
        self.label2 = QLabel("")

        self.label3 = QLabel("Which state do you live in?")
        self.rbtn3 = QRadioButton("New York")
        self.rbtn4 = QRadioButton("Texas")
        self.label4 = QLabel("")

        self.btngroup1 = QButtonGroup()
        self.btngroup2 = QButtonGroup()

        self.btngroup1.addButton(self.rbtn1)
        self.btngroup1.addButton(self.rbtn2)
        self.btngroup2.addButton(self.rbtn3)
        self.btngroup2.addButton(self.rbtn4)

        self.rbtn1.toggled.connect(self.onClickedCity)
        self.rbtn2.toggled.connect(self.onClickedCity)

        self.rbtn3.toggled.connect(self.onClickedState)
        self.rbtn4.toggled.connect(self.onClickedState)

        layout = QVBoxLayout()
        layout.addWidget(self.label)
        layout.addWidget(self.rbtn1)
        layout.addWidget(self.rbtn2)
        layout.addWidget(self.label2)

        layout.addWidget(self.label3)
        layout.addWidget(self.rbtn3)
        layout.addWidget(self.rbtn4)
        layout.addWidget(self.label4)

        self.setGeometry(200, 200, 300, 300)

        self.setLayout(layout)
        self.setWindowTitle("PyQt5 Radio Button Example")

        self.show()

    def onClickedCity(self):
        radioBtn = self.sender()
        if radioBtn.isChecked():
            self.label2.setText("You live in " + radioBtn.text())

    def onClickedState(self):
        radioBtn = self.sender()
        if radioBtn.isChecked():
            self.label4.setText("You live in " + radioBtn.text())


if __name__ == "__main__":
    app = QApplication(sys.argv)
    ex = basicRadiobuttonExample()
    sys.exit(app.exec_())

PyQt5 QRadiobutton 라디오 버튼 QButton 그룹 그룹

self.btngroup1 = QButtonGroup()
self.btngroup2 = QButtonGroup()

단일 선택 단추를 보유하기 위해 두 개의 단추 그룹이 작성됩니다.

self.btngroup1.addButton(self.rbtn1)
self.btngroup1.addButton(self.rbtn2)
self.btngroup2.addButton(self.rbtn3)
self.btngroup2.addButton(self.rbtn4)

같은 그룹의 라디오 버튼은 같은 QButtonGroup 에 추가됩니다.

작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook