PyQt5 チュートリアル - ラジオボタン

胡金庫 2023年1月30日
  1. PyQt5 QRadiobutton の基本的な例
  2. PyQt5 QRadiobutton setChecked メソッド
  3. PyQt5 QRadiobutton グループ
PyQt5 チュートリアル - ラジオボタン

QRadiobuttonQCheckbox に似ていますが、複数の選択肢がありますが、一度に選択できるのは 1つだけです。QRadiobutton ウィジェットには、丸いラジオボタンと共にテキストラベルもあります。

PyQt5 QRadiobutton の基本的な例

以下のコードは、あなたが住んでいる都市を尋ね、ユーザーが選択するための 2つのラジオボタンを作成します。ユーザーがラジオボタンのいずれかを選択すると、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")

2つの radio ボタン rbtn1rbtn2 を作成します。括弧内の文字列は、丸いレイドボタンの横に表示されるテキストラベルです。

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

ボタンは、ボタンが選択または選択解除されるたびにトグル信号を発します。onClicked 関数は、2つのラジオボタンのトグル信号に接続されます。

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 グループ

同じ親ウィンドウのすべてのラジオボタンは同じグループ内にあり、トグル信号が異なる機能に接続されていても、一度に 1つのラジオボタンしか選択できないことを意味します。

QtWidgetsQButtonGroup は選択されたボタンをグループ化し、複数の QButtonGroup インスタンスを作成してラジオボタンを異なるグループから分離し、同じ親ウィジェットでより多くのボタンをチェックできるようにします。

以下に、2つのグループのラジオボタンから市と州の両方を選択するようにユーザーに求める例を示します。

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 Radiobutton QButtonGroup グループ

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

ラジオボタンを保持するために 2つのボタングループが作成されます。

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

同じグループ内のラジオボタンは同じ QButtonGroup に追加されます。

著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook