見出し画像

【Python】キーワードに該当するファイルを印刷するプログラムを作ってみた

毎月出てくる領収書のファイルを開いて印刷して・・・の繰り返しが面倒なので、キーワードに該当するファイルをワンクリックで全て印刷するプログラムを作ってみました。

pyファイルの配置場所とフォルダ階層は以下の通りです。

auto_print.py
│
│
│  
├─01
│  ├─料金のお知らせ
│  │      Ryoukin_202303.pdf
│  │      Ryoukin_202304.pdf
│  │      Ryoukin_202305.pdf
│  │      Ryoukin_202306.pdf
│  │      Ryoukin_202307.pdf
│  │      Ryoukin_202308.pdf
│  │      
│  └─領収書
│          Ryousyuu_202304.pdfRyousyuu_202305.pdfRyousyuu_202306.pdfRyousyuu_202307.pdfRyousyuu_202308.pdf
│          
├─02
│  │
│  ├─料金のお知らせ
│  │     Ryoukin_202303.pdf
│  │      Ryoukin_202304.pdf
│  │      Ryoukin_202305.pdf
│  │      Ryoukin_202306.pdf
│  │      Ryoukin_202307.pdf
│  │      Ryoukin_202308.pdf
│  │        
│  └─領収書
│          Ryousyuu_202304.pdfRyousyuu_202305.pdfRyousyuu_202306.pdfRyousyuu_202307.pdfRyousyuu_202308.pdf




1.インストール

今回使用するGUIライブラリはPySimpleGUIなので、下記コマンドで導入。
また、pywin32も必要になるので併せて導入します。

pip install PySimpleGUI
pip install pywin32


2.ライブラリ

使用するライブラリの一覧です。

import win32api
import glob
import time
import PySimpleGUI as sg


3.テーマカラー

GUIのカラーテーマは「DarkBlue3」を選択しました。

# デザイン設定
sg.theme('DarkBlue3')

どんなテーマがあるのか確認したい場合は、下記コードで確認できます。

"""テーマカラーを確認するコード"""

import PySimpleGUI as sg

sg.theme('Dark Brown')

layout = [[sg.Text('Theme Browser')],
          [sg.Text('Click a Theme color to see demo window')],
          [sg.Listbox(values=sg.theme_list(), size=(20, 12), key='-LIST-', enable_events=True)],
          [sg.Button('Exit')]]

window = sg.Window('Theme Browser', layout)

while True:  # Event Loop
    event, values = window.read()
    if event in (sg.WIN_CLOSED, 'Exit'):
        break
    sg.theme(values['-LIST-'][0])
    sg.popup_get_text('This is {}'.format(values['-LIST-'][0]))

window.close()


4.GUI概要

・料金のお知らせと領収書の2種類が対象となるので、ラジオボタン選択式
・ファイルの末尾が西暦+月で固定されているのでテキストボックスに印刷対象のキーワードとして入力
・印刷を開始ボタンを押すと印刷処理開始

# ウィンドウに配置するコンポーネント
layout = [
    [sg.Text('印刷するファイルの種別を選択してください')],
    [sg.Radio('料金のお知らせ', group_id='group1', key='price', default=True),],
    [sg.Radio('領収証', group_id='group1', key='transfer', default=False)],
    [sg.Text('年月を入力して下さい')],
    [sg.Text('ex)202304'), sg.InputText(key='-Input-')],
    [sg.Button('印刷を開始', key='-Btn-')],
    [sg.Output(size=(100,10), key='-MULTILINE-')]
]


ここから先は

3,388字

¥ 500

最後まで駄文をお読みいただきありがとうございます! 誤字脱字等ありましたらお気軽にコメントいただければ幸いです。 コメント、スキ、外部サイトへのシェアもよろしくお願いいたします! ※サポートいただいた場合は書籍購入等の勉強費用に使わせていただきます。