「Pythonで自分用に作ったツールを、誰かに使ってもらうには、どうしたら良いのか?」その一番分かりやすい答えが、GUIの操作画面を用意することだ。今回は、手軽にGUIを作るライブラリPySimpleGUIを利用して、自作ツールに分かりやすい設定画面を追加する方法を紹介する。前回、PDFの作成ツールを作った。実はこのツール、友人に頼まれて作ったものだった。友人と話していて「こんなツールがあったら良いのに!」と言っていたので、筆者が本連載のネタにもなると思って「それなら簡単に作れるよ」と安請け合いしたのだった。実際に使ってもらったところ、「使い方が全く分からない、使いたくない」と言われてしまったのだった。前回を読んでもらうと分かるのだが、指定フォルダに画像ファイルをコピーして、実行ファイルをダブルクリックするとPDFファイルが作成されるという仕組みだった。Pythonをインストールするのは大変だろうと、PyInstallerを使ってWindowsの実行ファイルに変換したものを渡したのだが、プログラムを実行すると、真っ黒の画面(Pythonの実行画面)が出て「ok」と表示されるだけだったのがいけなかったようだ。そんな訳で、筆者が友人からの評判を落とした敗因は次の3点だ。詳しい使い方を説明しなかったこと以上の点を反省して、前回作成したツールを「誰でも使える」という点に留意して改良してみよう。PySimpleGUIで設定画面を作ろうまずは、実行して黒い画面しか表示されないという点を改良してみよう。この手のツールと言えば、以下のように画像ファイルを選択するリストボックスや保存先ファイルを指定するテキストボックスを配置したウィンドウが表示されるのが一般的だろう。黒い画面でなくGUI画面がでるのが一般的なWindowsアプリの挙動こうした、PythonでGUI画面を作るには、PySimpleGUIというライブラリを使うと便利だ。PySimpleGUIはtkinterをベースに開発されたGUIライブラリであり、WindowsだけでなくmacOSやLinuxでも同じように動かすことができるのもメリットだ。本連載の73回目でもPySimpleGUIの簡単な使い方を紹介した。今回は、PySimpleGUIをもう少し深堀りして、画像をPDFに変換するダイアログを作成しよう。PySimpleGUIをインストールして簡単なプログラムを作ろうまずは、PythonパッケージのPySimpleGUIをインストールしよう。pysimpleguiそれでは、簡単なウィンドウの利用例を確認してみよう。最初にプログラムの実行画面を確認してからプログラムを見てみよう。カレーかラーメンを尋ねるプログラムこのプログラムは「カレー」か「ラーメン」を尋ねるプログラムだが、二つのボタンを配置してボタンを押した時にメッセージがポップアップするものにした。以下がそのプログラムだ。breakwindow.close()上記のプログラムを「curry_or_ramen.py」という名前でファイルを保存しよう。ターミナル(WindowsならPowerShell、macOSならターミナル.app)を起動して、以下のコマンドを実行しよう。curry_or_ramen.pyそれでは、プログラムを確認してみよう。プログラムを実行するには、ターミナル(WindowsならPowerShell、macOSならターミナル.app)を起動して、以下のコマンドを実行しよう。プログラムを確認しよう。プログラムの(*1)では、レイアウトを作成する。PySimpleGUIの良いところだが、レイアウトを二次元のリストで表現できる。以下の図を見れば、非常に直感的にGUIのパーツを定義できることが分かるだろう。PySimpleGUIでは二次元リスとでレイアウトを定義できる(*2)のsg.Windowメソッドでウィンドウを作成できる。(*1)で指定したレイアウトを第2引数に与える。(*3)ではイベントループを実行する。ウィンドウは作成するだけでは駄目で、イベントループを実行することで、ユーザーの操作に対していろいろな処理を実行できるようになる。(*4)では、window.read()でイベントデータを取得する。(*5)以降ではイベントに応じた処理を記述する。ここでは、どのボタンが押されたのかを判定する。eventにはボタンのラベルが入っている。sg.popupでダイアログにメッセージを表示できる。ファイルダイアログを表示するプログラムを作ろう以上で基本が分かったことだろう。次にファイルを選んでテキストボックスに表示するプログラムを作ってみよう。次の図のような動作をするプログラムを作ってみよう。ファイルダイアログを表示したところ以下のプログラムを実行すると入力ボックスと「参照」と「処理実行」というボタンの配置されたウィンドウが表示される。そこで、「参照」ボタンを押すと、ファイルの選択ダイアログが表示される。ファイルを選び「処理実行」ボタンを押すと、選択したファイルをダイアログに表示するというプログラムだ。終了処理window.close()上記のプログラムを「simple_dialog.py」という名前で保存する。ターミナルで以下のコマンドを実行するとウィンドウが表示される。simple_dialogプログラムを確認しよう。(*1)ではレイアウトを作成する。(*2)ではイベントループの中で、イベント情報を取得する。(*3)以降でイベントに応じた処理を行う。(*4)では「参照」ボタンを押した時の処理を記述している。sg.popup_get_fileメソッドを実行すると、ファイルの選択ダイアログが表示される。(*5)でファイルを選択したか確認し、(*6)では、window[キー].update(内容)を実行して、keyを指定したパーツの内容を更新する。(*7)のようにイベント時にInputTextに表示されている内容を取得することができる。PDF生成ツールのUIを作成しようここまで来れば、冒頭で紹介したように、前回作成したコマンドラインから使うPythonのプログラムにGUIを追加することができるだろう。完成したプログラムはちょっと長くなったので、ポイントだけ抜粋して紹介しよう。プログラム全体は、こちらのGitHubにアップロードしておいた。PDF生成プログラムに設定画面を作ったそれで画面機能のみを抜粋したのが以下のプログラムだ。mock.py」を実行すれば、ウィンドウを動かすことができるようにした。[]window.close()プログラムを確認してみよう。(*1)以降の部分では、画面レイアウトを定義している。frame_pdf_pathやframe_iamges、frame_per_pageは、画面の各部を表すフレームを個別に定義している。※本記事は掲載時点の情報であり、最新のものとは異なる場合があります。システムやソフトウェアの開発に携わるエンジニアに向けた最新情報など仕事に役立つ話題などを提供していきます。Corporation。