質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

4502閲覧

[Python3] [PyQt5] コンボボックスのデフォルト表示

question01

総合スコア11

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1グッド

0クリップ

投稿2020/07/15 19:51

Qt5のコンボボックスの初期表示をリストの一番上ではなく、任意に指定して表示したいです。

# コンボボックス self.comboBox_default = QComboBox(self.tab) self.comboBox_default.setObjectName(u"comboBox_default") self.comboBox_default.setGeometry(QRect(110, 10, 271, 22)) # コンボボックスの中身 defaultList = ["a","b","c"] self.comboBox_default.addItems(defaultList)

このコンボボックスの中の「"b"」をデフォルト表示にしたいのですが、並び順を変えずにどのように指定すればよいのでしょう?

teamikl👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

addItems の後に setCurrentIndex で指定できます。

python

1comboBox = QComboBox() 2defaultList = ["a","b","c"] 3comboBox.addItems(defaultList) 4 5# リストが固定で、予め "b" の index が解る場合 6comboBox.setCurrentIndex(1) 7 8# リストが変更される可能性がある場合 9comboBox.setCurrentIndex(comboBox.findData("b"))

投稿2020/07/16 01:27

teamikl

総合スコア8664

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

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

question01

2020/07/16 17:44

index で指定する場合は ・comboBox.setCurrentIndex(1) で指定できましたが、表示されている文字列で指定する場合は、 ・comboBox.setCurrentIndex(comboBox.findData("b")) ではなく comboBox.setCurrentText("b") で指定できました ありがとうございます。
teamikl

2020/07/16 19:41

setCurrentText("b") だと、若干挙動の違いがあり、 「リストに "b" がない場合」に editable のフラグにより True の場合 "b" になる。False の場合 最初の要素になる。 といった違いが生まれてしまいます。(選択ではなく入力になる為) 問題なければ構わないのですが、注意が必要な点です。 case: 不手際等で "b" がリストからなくなった場合を想定した時の動作 - 空欄、何も選択されない setCurrentIndex/findData - 最初の要素が選択される setCurrentText/editable False - 要素が無くても "b" を表示。setCurrentText/editable True ("b" がなくなった事には気付かない) 対策案: combobox.setEditable 直前に明示しておく。 リストの内容を確認するテストを書いておく。
question01

2020/07/18 10:12

>「リストに "b" がない場合」に editable のフラグにより >True の場合 "b" になる。False の場合 最初の要素になる。 >といった違いが生まれてしまいます。(選択ではなく入力になる為) そういう挙動があるのですね。 ただ今回の件では、「コンボボックスの入力は不可」「デフォルト値が存在しない場合はリストの一番上を指定」を実現したかったので、結果的に成功でした。 詳しく教えてくださりありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問