PythonでPyQt5を使用し作成したQComboBox(ドロップダウンリスト)の値を取得してみます。
オプションを選択するユーザーのための項目をドロップダウンリスト形式で提供するQComboBox(ドロップダウンリスト)ですが、今回はユーザーが選択した値を取得してみます。
今回はPyQt5を使用します。PyQt5はPythonの標準ライブラリではないので、事前にインストールする必要があります。
■Python
今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)
■作成したQComboBox(ドロップダウンリスト)の値を取得する
では、早速PyQt5を使用し作成したQComboBox(ドロップダウンリスト)の値を取得するスクリプトを書いていきます。
■コード
import sys from PyQt5 import QtWidgets from PyQt5.QtCore import showbase from PyQt5.QtWidgets import QApplication, QWidget def show(): result = dropdownlist.currentText() print(result) if __name__ == "__main__": app = QApplication(sys.argv) root = QWidget() root.resize(300,300) root.setWindowTitle('こんにちは、世界') dropdownlist = QtWidgets.QComboBox(root) dropdownlist.addItem("大阪") dropdownlist.addItem("京都") dropdownlist.addItem("神戸") dropdownlist.move(100,100) button = QtWidgets.QPushButton(root) button.setText("送信ボタン") button.clicked.connect(showbase) button.move(100,200) root.show() sys.exit(app.exec_())
今回はsysモジュールと、importでPyQt5でQtWidgets、「from import」でPyQt5.QtWidgetsのQApplication,QWidgetを呼び出します。
呼び出した後に、ドロップダウンリストからユーザーが選択した値(テキスト)を出力させるために、def文を用いて、show()という関数を定義します。今回の関数を呼び出した時の処理は、currentText()を用いて、QComboBox(ドロップダウンリスト)(dropdownlist変数)の値を取得し、print()関数で取得させるようにします。
その後に「if __name__ == ‘__main__’」で関数などをまとめたモジュールを作成します。
作成する内容は、app変数を定義し、QApplication()を用いて、QApplicationクラスのオブジェクトを作成し格納。格納後、root変数を定義し、QWidget()を用いてQWidgetクラスのオブジェクトを作成し格納。これはQtのすべてのUIオブジェクトの基本クラス。
格納後、resize()を用いて括弧内に任意のウィジェット(ウインドウ)のサイズを渡します。今回は300px×300pxを引数,パラメータとして渡します。
さらにsetWindowTitle()を用いて括弧内に表示させるウィンドウのタイトル(文字列)を渡します。今回は「こんにちは、世界」という日本語の文字列を引数,パラメータとして渡します。
ウィンドウのタイトルの設定を行った後に、今度はQComboBox(ドロップダウンリスト)を作成します。checkという変数を定義し、QtWidgets.QComboBox()を用います。括弧内には引数,パラメータとしてrootを渡します。これで項目がなにも追加されていない空のComboBox(ドロップダウンリスト)が作成されます。
作成後、addItem()を用いて、ComboBox(ドロップダウンリスト)内に追加する項目をテキストを括弧内に引数,パラメータとして渡します。今回は「大阪」,「京都」,「神戸」とします。これで空のComboBox(ドロップダウンリスト)に、項目が追加されます。
項目が追加後、move()を用いてウインドウ内でComboBox(ドロップダウンリスト)を表示させる位置を指定します。括弧内に引数,パラメータとして座標を渡します。第1の引数,パラメータはX座標、第2の引数,パラメータはY座標となります。今回は「100,100」としています。
ドロップダウンリストの座標を指定した後は、button変数を定義し、QPushButtonウィジェットを作成し、setText()で表示させるテキスト(文字列)を指定し、clicked.connect()を用いてウィジェットをクリックした後に、show()関数を呼び出し処理を実行するようにします。ウィジェットの表示位置は、move()を用いて指定します。
その後、show()を用いてウィジェット(ウインドウ)をモニター画面に表示させます。
最後にsys.exit(app.exec_())を用います。app.exec_()は、イベントのループを開始させることができます。さらにQtに制御を渡し、ユーザーがGUIからアプリケーションを閉じた時のみ、アプリケーションを終了となりますので、途中でイベントが終了することはありません。このsys.exit(app.exec_())を用いずに、実行すると、ウインドウがすぐに閉じてしまいます。
■実行・検証
このスクリプトを「qt_drop_down_value.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。
実行してみると、ウインドウ内に、QComboBox(ドロップダウンリスト)と、QPushButtonウィジェットが表示されました。表示後、今回はドロップダウンリストから「京都」を選択し、QPushButtonウィジェットをクリックしてみます。
クリックすると、clicked.connect()を用いたことで、今回定義した関数が呼び出され、処理が実行し、コマンドプロンプト上でユーザーが選択した値を出力させることができました。
コメント