PythonでPyQt5を使用し入力を受け取るQLineEditウィジェットで値(テキスト)を取得する

PythonでPyQt5を使用しQLineEditウィジェットを作成し、ユーザーからの入力を受け取り値(テキスト)を取得してみます。

QLineEditウィジェットを用いることで、ユーザー(もしくはコンソール)からの入力を受け取ることができ、今回は受け取った値(テキスト)を取得し出力してみます。

今回はPyQt5を使用します。PyQt5はPythonの標準ライブラリではないので、事前にインストールする必要があります。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■QLineEditウィジェットを作成し、ユーザーからの入力を受け取り値(テキスト)を取得

では、早速QLineEditウィジェットを作成し、ユーザーからの入力を受け取り値(テキスト)を取得するスクリプトを書いていきます。

■コード

import sys
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QWidget

def show():
    print(line.text())

if __name__ == "__main__":
    app = QApplication(sys.argv)
    root = QWidget()
    root.resize(300,300)
    root.setWindowTitle('こんにちは、世界')
    
    button = QtWidgets.QPushButton(root)
    button.setText("投稿")
    button.clicked.connect(show)
    button.move(100,150)

    line = QtWidgets.QLineEdit(root)
    line.move(100,80)

    root.show()

    sys.exit(app.exec_())

今回はsysモジュールと、importでPyQt5でQtWidgets、「from import」でPyQt5.QtWidgetsのQApplication,QWidgetを呼び出します。

呼び出した後に、ユーザーから受け取った値(テキスト)を出力させるために、def文を用いて、show()という定義します。今回の関数を呼び出した時の処理は、text()を用いて、QLineEditウィジェット(line変数)の値を取得し、print()関数で取得させるようにします。

その後、「if __name__ == ‘__main__’」で関数などをまとめたモジュールを作成します。

作成する内容は、app変数を定義し、QApplication()を用いて、QApplicationクラスのオブジェクトを作成し格納。格納後、root変数を定義し、QWidget()を用いてQWidgetクラスのオブジェクトを作成し格納。これはQtのすべてのUIオブジェクトの基本クラス。

格納後、resize()を用いて括弧内に任意のウィジェット(ウインドウ)のサイズを渡します。今回は300px×300pxを引数,パラメータとして渡します。

さらにsetWindowTitle()を用いて括弧内に表示させるウィンドウのタイトル(文字列)を渡します。今回は「こんにちは、世界」という日本語の文字列を引数,パラメータとして渡します。

ウィンドウのタイトルの設定を行った後に、button変数を定義し、QtWidgets.QPushButton()を用います。括弧内には引数,パラメータとしてrootを渡します。これでボタンウィジェットが作成されます。

ボタンウィジェットを作成後、setText()を用いて、ボタンウィジェット内に表示させるテキスト(文字列)を括弧内に引数,パラメータとして渡します。今回は「投稿」とします。

テキストの設定後、button.clicked.connect()を用いて、ボタンウィジェットをクリックした後に、先程定義したshow()を呼び出すために、括弧内に引数,パラメータとして、showを渡します。

ボタンウィジェットのクリック後の設定した後に、move()を用いてmove()をウインドウ内でボタンウィジェットを表示させる位置を指定します。括弧内に引数,パラメータとして座標を渡します。第1の引数,パラメータはX座標、第2の引数,パラメータはY座標となります。今回は「100,150」としています。

ボタンウィジェットを表示させる位置を指定後、line変数を定義し、その中でQtWidgets.QLineEdit()を用います。括弧内には、引数,パラメータとしてrootを渡します。これでQLineEditウィジェットが作成され、ユーザーからの入力を受け取ることができます。

作成後、move()を用いてウインドウ内でQLineEditウィジェットを表示させる位置を指定します。括弧内に引数,パラメータとして座標を渡します。第1の引数,パラメータはX座標、第2の引数,パラメータはY座標となります。今回は「100,80」としています。

その後、show()を用いてウィジェット(ウインドウ)をモニター画面に表示させます。

最後にsys.exit(app.exec_())を用います。app.exec_()は、イベントのループを開始させることができます。さらにQtに制御を渡し、ユーザーがGUIからアプリケーションを閉じた時のみ、アプリケーションを終了となりますので、途中でイベントが終了することはありません。このsys.exit(app.exec_())を用いずに、実行すると、ウインドウがすぐに閉じてしまいます。

■実行・検証

このスクリプトを「qt_text.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

実行してみると、ウインドウ内に、QLineEditウィジェットとボタンウィジェットが表示されました。表示された後に、QLineEditウィジェットにテキストを入力し、ボタンウィジェットを押してみます。

押してみると、QLineEditウィジェットに入力された値(テキスト)が取得され、コマンドプロンプト上で取得された値が出力されることを確認できました。

コメント

タイトルとURLをコピーしました