PyQt5 튜토리얼-라디오 버튼
QRadiobutton
은 QCheckbox
와 유사하지만 둘 이상의 선택권이 있지만 하나만 선택할 수 있다는 점이 다릅니다 한 번에. 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_())
self.rbtn1 = QRadioButton("New York")
self.rbtn2 = QRadioButton("Houston")
우리는 두 개의 라디오 버튼 rbtn1
과 rbtn2
를 만듭니다. 괄호 안의 문자열은 둥근 라디오 버튼 옆에 표시되는 텍스트 레이블입니다.
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``setChecked
메소드
QRadiobutton
은 초기화 후에 기본적으로 체크되지 않습니다. setChecked()
메소드를 사용하여 초기화하는 동안 라디오 버튼의 기본 상태를 Checked
로 변경할 수 있습니다.
예를 들어, 위의 예제 코드에 아래 행을 추가하여New York
라디오 단추를 확인하십시오.
self.rbtn1.setChecked(True)
PyQt5 QRadiobutton
그룹
동일한 부모 창에있는 모든 라디오 버튼은 같은 그룹 내에 있으며 ‘전환 된’신호가 다른 기능에 연결되어 있어도 한 번에 하나의 라디오 버튼 만 선택할 수 있음을 의미합니다.
QtWidgets
의 QButtonGroup
은 선택된 버튼들을 하나로 묶고, 여러 개의 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_())
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
에 추가됩니다.
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