🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

4016閲覧

PyQt5にてチェックボックスの値の返し方を教えてください。

jiaetakoga

総合スコア96

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/09/22 07:53

以下の内容にて、チェックボックス(男性or女性)を選択した場合、「あなたは男性(or女性)です。」と、その値を返すにはどうすればよろしいでしょうか?

ーーーーーーーーーーーーーーーーーーーーーーー

python

1 2import sys 3from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QGridLayout, QPushButton, QLineEdit, QMessageBox, QCheckBox, QRadioButton 4from PyQt5.QtCore import Qt 5 6class ExampleWidget(QWidget): 7 8 def __init__(self): 9 super().__init__() 10 self.initUI() 11 12 def initUI(self): 13 self.resize(400, 250) 14 self.move(500, 200) 15 self.setWindowTitle('入力フォーム') 16 17 # buttonの設定 18 self.button = QPushButton('表示') 19 self.button.clicked.connect(self.buttonClicked) 20 21 # テキストボックスの設定 22 self.textname = QLineEdit() 23 self.texttel = QLineEdit() 24 25 # ラベルの設定 26 self.label1 = QLabel('名前:') 27 self.label2 = QLabel('TEL:') 28 self.label3 = QLabel('性別:') 29 self.label6 = QLabel('血液型:') 30 31 32 # チェックボックスの設定(性別) 33 self.checkman = QCheckBox('男性', self) 34 self.checkwoman = QCheckBox('女性', self) 35 36 # ラジオボタンの配置(血液型) 37 self.radioA = QRadioButton('A') 38 self.radioB = QRadioButton('B') 39 self.radioO = QRadioButton('0') 40 self.radioAB = QRadioButton('AB') 41 42 43 # レイアウト配置 44 self.grid = QGridLayout() 45 self.grid.addWidget(self.textname, 0, 1, 1, 3) 46 self.grid.addWidget(self.texttel, 1, 1, 1, 3) 47 self.grid.addWidget(self.button, 0, 4, 1, 1) 48 self.grid.addWidget(self.label1, 0, 0, 1, 1) 49 self.grid.addWidget(self.label2, 1, 0, 1, 1) 50 self.grid.addWidget(self.label3, 2, 0, 1, 1) 51 self.grid.addWidget(self.label6, 3, 0, 1, 1) 52 self.grid.addWidget(self.checkman, 2, 1, 1, 1) 53 self.grid.addWidget(self.checkwoman, 2, 3, 1, 1) 54 self.grid.addWidget(self.radioA, 3, 1, 1, 1) 55 self.grid.addWidget(self.radioB, 3, 2, 1, 1) 56 self.grid.addWidget(self.radioO, 3, 3, 1, 1) 57 self.grid.addWidget(self.radioAB, 3, 4, 1, 1) 58 59 self.setLayout(self.grid) 60 61 # 表示 62 self.show() 63 64 65 def buttonClicked(self): 66 QMessageBox.about(self, "Title", '名前: ' + self.textname.text() + '\nTEL: ' + self.texttel.text() + '\n性別: ') 67 68if __name__ == '__main__': 69 70 app = QApplication(sys.argv) 71 ew = ExampleWidget() 72 sys.exit(app.exec_())

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

checkState()で取得してください。

if self.checkman.checkState():

みたいな感じです。


申し訳ありませんが、具体的にどのようにコードを書けば良いか教えて頂けますでしょうか??

こんな感じでしょうか

Python

1 def buttonClicked(self): 2 if self.checkman.checkState() and self.checkwoman.checkState(): 3 strSex = "なぞ" 4 elif self.checkman.checkState(): 5 strSex = "男性" 6 elif self.checkwoman.checkState(): 7 strSex = "女性" 8 else: 9 strSex = "未選択" 10 11 QMessageBox.about(self, "Title", '名前: ' + self.textname.text() + '\nTEL: ' + self.texttel.text() + '\n性別: ' + strSex)

①ラジオボタンの値の取得

ラジオボタンを取り扱う場合はまず「グループ化」が必要です。(ラジオボタンはそのグループの中で一つだけ選択可能となります。)

importにQButtonGroupを追加

Python

1from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QGridLayout, QPushButton, QLineEdit, QMessageBox, QCheckBox, QRadioButton, QButtonGroup

ラジオボタン作成後にグループ化。同時にボタンにIDを振ります。今回の場合は0=A, 1=B, 2=O, 3=AB

Python

1 self.groupBloodType = QButtonGroup() 2 self.groupBloodType.addButton(self.radioA, 0) 3 self.groupBloodType.addButton(self.radioB, 1) 4 self.groupBloodType.addButton(self.radioO, 2) 5 self.groupBloodType.addButton(self.radioAB, 3)

self.groupBloodType.checkedId()でグループの中で選択されているボタンのIDをとれます。

Python

1 if self.groupBloodType.checkedId() < 0: 2 strBloodType = "未選択" 3 else: 4 strBloodType = [ 'A', 'B', 'O', 'AB' ][self.groupBloodType.checkedId()]

②Qtページにて、どのようにして該当のものを探し出しているか

基本は
Qt 5.13 Documentationのページで右上の検索欄からクラス名で検索します。

あとはやりたいことから適当に単語を抜き出して" PyQt5 [抜き出した単語]"でググります。
必要であればすべての単語を英語にして日本語限定を外して検索します。

投稿2019/09/22 08:32

編集2019/09/23 03:35
nomuken

総合スコア1627

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jiaetakoga

2019/09/23 02:33

ご回答ありがとうございます! 申し訳ありませんが、具体的にどのようにコードを書けば良いか教えて頂けますでしょうか?? 回答いただいた内容でなんとか試行錯誤してみましたがどうも分からず、、
jiaetakoga

2019/09/23 03:04

ありがとうございます。 うまく作動できました。 ちなみに、 ①ラジオボタンの値の取得 ②Qtページにて、どのようにして該当のものを探し出しているか についても教えていただければ幸いです。 質問ばかりで恐れ入ります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問