ツールを導入・運用する為、VBAのような他のプログラミング言語を使って開発したことがあるいう方もいらっしゃると思います。使用用途に合わせて、設計をしたツールを作成していく場合、Pythonを利用したほうが、データ処理・分析・解析する際にコードを書きやすい、またはメンテナンスをしやすいというケースもあるでしょう。
今回作成するGUIツールでは、「PySimpleGUI」ライブラリの使い方をまず確認していきたいと思います。他にもPythonではTkinterライブラリを使ってGUIツールを作成するということもできますので、興味のある方は、以下の記事もご覧いただければと幸いです。
・【Tkinterの記事】 Pythonで「標準体重計算」と「電卓」のプログラムを書いてみよう~文字列と数値の扱い/入力処理/GUIツール(Tkinter)の基礎を確認
では実際に「PySimpleGUI」ライブラリを使ってGUIツールの使い方について簡単にサンプルで確認後、Excelファイルを読み込んで表の内容を出力するGUIツールの作り方をみていきたいと思います。
他にも「こんなGUIツールをPythonで作ってみたい!」と具体的にイメージしてみると、学習するメリットを感じることができ、面白いと感じられるかもしれません。
それではまず、VSCodeにてPySimpleGUIライブラリの基本的な使い方を確認していきましょう。
Contents
- 1 PySimpleGUIの基礎~基本的な使い方
- 2 PySimpleGUI の手始め~メッセージ出力/文字入力とテキストボックスの値受け取り
- 3 問題1:PySimpleGUIのサンプル実行~テキスト入力とラジオボタンで入力した結果をメッセージ出力するサンプルを実行
- 4 問題2:PySimpleGUIのサンプル実行 ~ 課題(Excel読込後の処理判定)の画面レイアウトを作成
- 5 xlwings とは ~基本的な使い方
- 6 xlwings ライブラリの使い方
- 7 問題3:xlwingsの使い方①~ExcelファイルのA1セルに「はじめて試すxlwings」と値を書き込む
- 8 問題4:xlwingsの使い方②~Excelファイルにシートを追加して、値を書き込む
- 9 問題5【課題】:Excel読込後の処理実装~問題2にて作成した画面レイアウトに処理を記述
PySimpleGUIの基礎~基本的な使い方
次のようなサンプル作成を通して、PySimpleGUIの基礎について学んでいきましょう。
・インストール
pipというPythonのパッケージ管理ツールを使って、「PySimpleGUI」をインストールします。
※Pythonインストール時に標準で入っているパッケージ以外をインストールする場合、
「pip install パッケージ名」のコマンドで、ローカル環境のPowerShellにてインストールをします。
pip install PySimpleGUI
PySimpleGUI の手始め~メッセージ出力/文字入力とテキストボックスの値受け取り
インストール後に以下のコードを実行して、メッセージが表示されることを確認しましょう。
import PySimpleGUI as sg sg.popup("はじめての「PySimpeGUI」", title="PySimpleGUIのサンプル")
次は、問題演習を通して、PySimpleGUIの画面レイアウト作成と中身の処理を実装しましょう。
問題1:PySimpleGUIのサンプル実行~テキスト入力とラジオボタンで入力した結果をメッセージ出力するサンプルを実行
以下のサンプルコードを読み、
テキスト入力とラジオボタンで入力した結果をメッセージ出力するサンプルを実行してください。
import PySimpleGUI as sg # 画面レイアウトを指定 layout = [ [sg.Text('名前', size=(15,1)), sg.InputText('',size=(15,1), key='tx1' )], [sg.Text('血液型')], [sg.Radio('A型' , group_id='g1', key='A-type'),sg.Radio('B型' , group_id='g1', key='B-type')], [sg.Radio('O型' , group_id='g1', key='O-type'),sg.Radio('AB型' , group_id='g1', key='AB-type')], [sg.Button(button_text='Click', key='bt1')] ] # ウィンドウ作成 window = sg.Window('血液型は?', layout) # イベントループ while True: event, values = window.read() #イベントの読み取り if event == 'bt1': if values['A-type'] == True: output = 'A型' elif values['B-type'] == True: output = 'B型' elif values['O-type'] == True: output = 'O型' elif values['AB-type'] == True: output = 'AB型' else: output = '無回答' sg.popup(values['tx1'] +'さんの血液型は' + output +'です。') elif event is None: break window.close()
問題2:PySimpleGUIのサンプル実行 ~ 課題(Excel読込後の処理判定)の画面レイアウトを作成
以下のサンプルのように(PySimpleGUIの基礎解説の参考サイトや他のWebサイトを参考にしながら)Excelファイルを読み込む画面レイアウトを作成してください。
xlwings とは ~基本的な使い方
xlwingsツールを使うことで、PythonでもExcelマクロ(VBA)のように操作することができます。
・「xlwings」の公式サイト
https://docs.xlwings.org/ja/latest/quickstart.html
・インストール
「pip install パッケージ名」のコマンドで、ローカル環境のPowerShellにてインストールをします。
import xlwings as xw
xlwings ライブラリの使い方
以下の手順で、Excelブックを作成(または選択後)に、シート操作し、保存します。
問題3:xlwingsの使い方①~ExcelファイルのA1セルに「はじめて試すxlwings」と値を書き込む
以下のサンプルのように「hello.xlsx」と「xlwings.py」ファイルを作成後に
実行して、hello.xlsxファイルのA1セルに「はじめて試すxlwings」と表示されるかを確認してください
► コード(xlwings_hello.py)
import xlwings as xw wb = xw.Book('hello.xlsx') xw.Range('A1').value = 'はじめて試すxlwings' # 必要に応じて記載 # wb.save('hello.xlsx') # wb.close()
► 実行結果
次は、xlwings でExcelブックを生成し、追加したシートに値を書き込む例についてみていきましょう。
import xlwings as xw import pandas as pd #シートに書き込む値を準備 data = [[1,'東京都'],[2,'神奈川県'],[3,'大阪府'],[4,'愛知県'],[5,'埼玉県']] df = pd.DataFrame(data, columns = ['Rank','Prefecture']) #Excelが画面に表示されないようにする xw.App(visible=False) #Excelブックを新規作成し、シートに値を書き込む wb = xw.Book() sheet = wb.sheets.add('サンプル') sheet.range('A2').value = data sheet.range('A1').options(index=False,header=True).value = df #ファイルの保存とブックのクローズ wb.save('sample.xlsx') wb.close()
問題4:xlwingsの使い方②~Excelファイルにシートを追加して、値を書き込む
xlwingsを利用して、次のようにExcelファイルに「サンプル」シートを追加し、値を書き込んでください。
import xlwings as xw import pandas as pd #シートに書き込む値を準備 data = [['1月','200,000','150,000'],['2月','210,000','155,000'],['3月','205,000','145,000']] df = pd.DataFrame(data, columns = ['月','収入','支出']) #Excelが画面に表示されないようにする xw.App(visible=False) #Excelブックを新規作成し、シートに値を書き込む wb = xw.Book() sheet = wb.sheets.add('サンプル') sheet.range('A2').value = data sheet.range('A1').options(index=False,header=True).value = df #ファイルの保存とブックのクローズ wb.save('budget.xlsx') wb.close()
問題5【課題】:Excel読込後の処理実装~問題2にて作成した画面レイアウトに処理を記述
問題2にて作成した以下の画面レイアウトにて「xlwingsの使い方②」で値の書き込みをしたExcelを読み込んだ後に
確認ボタンを押下した際に、Excelの内容が表示されるよう実装をしてください。
`
====================================
業務でPythonを使ってツールを作ったり、自動化処理を記述したりする機会がある方もいらっしゃると思います。自身のPCでVisual Studio Codeを使って簡単に今回のサンプルを試すことができますので、この機会にPythonに触れる時間を作っていただけると嬉しい限りです。
以上となります。