PySimpleGUIでは、簡単にGUIアプリが自作できます。
普段のお仕事に便利なクリップボードアプリを作ってみました。
この記事では、PySimpleGUIを使ったアプリの作り方を紹介します。
この記事に載っているサンプルコードをコピーして、Pythonで実行すれば、簡単に動きを確認できますので、是非試してみて下さい。
この記事では、初心者にもわかりやすいように、各処理の内容を、サンプルコード内にコメントとして載せています。
人工知能技術専門プログラミングスクール「AIジョブカレ」の無料説明会参加、講座申込み今回作成するアプリ
今回のアプリは、クリップボードアプリです。
アプリに登録した文章をクリップボードへ貼り付けて、WordやPowerPointなどに貼り付けたりできるアプリです。よく使う文章を登録しておくと、便利です。
任意のテキストを選択して、「Ctrl+C」を押すと、「コピー1」の入力欄に、コピーしたテキストが入ります。
クリップボードへ入れる場合は、チェックボックスをチェックして、「クリップボードへコピー」ボタンを押すと、クリップボードに格納されます。この状態で、「Ctrl+V」を押すと、選択したテキストをペーストできます。
準備
PySimpleGUIのインストールの仕方は、以下の記事で紹介しています。
Pyperclipは、クリップボードのデータを取り出したり、書き換えたりできるライブラリです。
以下のコマンドを使って、インストールしてください。
pip install pyperclip
サンプルコード
#!usr/bin/env python
# -*- coding: utf-8 -*-
import PySimpleGUI as sg
import pyperclip
sg.theme('LightGreen1') # ウィンドウテーマをブラックで設定
# 画面レイアウト(1段目:空白、2段目:時間、3段目:ボタン、ボタン、ボタン)
layout = [
[sg.Text(' クリップボードアプリ ')],
[sg.Checkbox('コピー1', size=(20,1), key='-CHECK1-'), sg.Multiline('',key='-COPY1-')],
[sg.Checkbox('コピー2', size=(20,1), key='-CHECK2-'), sg.Multiline('',key='-COPY2-')],
[sg.Checkbox('コピー3', size=(20,1), key='-CHECK3-'), sg.Multiline('',key='-COPY3-')],
[sg.Checkbox('コピー4', size=(20,1), key='-CHECK4-'), sg.Multiline('',key='-COPY4-')],
[sg.Checkbox('コピー5', size=(20,1), key='-CHECK5-'), sg.Multiline('',key='-COPY5-')],
[sg.Checkbox('コピー6', size=(20,1), key='-CHECK6-'), sg.Multiline('',key='-COPY6-')],
[sg.Checkbox('コピー7', size=(20,1), key='-CHECK7-'), sg.Multiline('',key='-COPY7-')],
[sg.Checkbox('コピー8', size=(20,1), key='-CHECK8-'), sg.Multiline('',key='-COPY8-')],
[sg.Button('クリップボードへコピー', key='-COPY-', button_color=('white', '#001480'))],
[sg.Exit(button_color=('white', 'firebrick4'), key='Exit')]
]
# ウィンドウの生成
window = sg.Window(' クリップボードアプリ ', layout)
# 今クリップボードに入っているデータは破棄
getdata_old = pyperclip.paste()
# メイン処理
while True:
event, values = window.read(timeout=1000) # 入力イベントを監視
# ウィンドウ上のボタン操作時の処理
if event in (sg.WIN_CLOSED, 'Exit'): # Exitボタン押下時は、処理終了
break
if event == '-COPY-': # コピーボタン押下時は、選択されたテキストをクリップボードへ戻す
if values['-CHECK1-'] == True:
data = values['-COPY1-']
elif values['-CHECK2-'] == True:
data = values['-COPY2-']
elif values['-CHECK3-'] == True:
data = values['-COPY3-']
elif values['-CHECK4-'] == True:
data = values['-COPY4-']
elif values['-CHECK5-'] == True:
data = values['-COPY5-']
elif values['-CHECK6-'] == True:
data = values['-COPY6-']
elif values['-CHECK7-'] == True:
data = values['-COPY7-']
elif values['-CHECK8-'] == True:
data = values['-COPY8-']
else:
data = ''
# クリップボードへコピー
pyperclip.copy(data)
print('クリップボードへコピーされたテキスト=',data)
getdata = pyperclip.paste()
print('クリップボードから取り出したテキスト=',getdata)
# 取得したクリップボードのデータが前回と同じなら、なにもしない
if getdata == getdata_old:
continue
# 取得したクリップボードのデータがすでに登録済みかどうかをチェック
if values['-COPY1-'] == getdata:
continue
elif values['-COPY2-'] == getdata:
continue
elif values['-COPY3-'] == getdata:
continue
elif values['-COPY4-'] == getdata:
continue
elif values['-COPY5-'] == getdata:
continue
elif values['-COPY6-'] == getdata:
continue
elif values['-COPY7-'] == getdata:
continue
elif values['-COPY8-'] == getdata:
continue
# 空いているところに、取得したクリップボードのデータを格納する
if values['-COPY1-'] == '':
window['-COPY1-'].update(getdata)
elif values['-COPY2-'] == '':
window['-COPY2-'].update(getdata)
elif values['-COPY3-'] == '':
window['-COPY3-'].update(getdata)
elif values['-COPY4-'] == '':
window['-COPY4-'].update(getdata)
elif values['-COPY5-'] == '':
window['-COPY5-'].update(getdata)
elif values['-COPY6-'] == '':
window['-COPY6-'].update(getdata)
elif values['-COPY7-'] == '':
window['-COPY7-'].update(getdata)
elif values['-COPY8-'] == '':
window['-COPY8-'].update(getdata)
getdata_old = getdata
window.close()
動かし方
実行すると、下図のようなウィンドウが立ち上がります。
クリップボードアプリに、テキストを格納する
・任意のテキストをマウスで選択して、「Ctrl+C」ボタンを押すと、「コピー1」の入力欄にそのテキストが入力されます。
・また異なるテキストを選択して、「Ctrl+C」ボタンを押すと、「コピー2」の入力欄にそのテキストが入力されます。
・同じテキストを選択した場合は、追加されないような処理を組み込んでいます。
クリップボードアプリからテキストを取り出す
任意のチェックボックスにチェックを入れて、「クリップボードへコピー」ボタンを押下すると、選択したテキストがクリップボードへ戻されます。
メモ帳等に、「Ctrl+V」すると、クリップボードを通じて、ペーストされます。
\ Pythonを勉強するなら、環境構築が楽で安いラズパイがオススメです /
まとめ
今回は、Pythonライブラリである、PySimpleGUI、Pyperclip を使った、クリップボードアプリの作り方を紹介しました。
- 【PythonでGUIアプリ入門】PySimpleGUI、Pyperclip を使った クリップボードアプリ の作り方
- 【PythonでGUIアプリ入門】PySimpleGUI を使った タイマーストップアプリ の作り方
- 【Python(PySimpleGUI)でGUIアプリ入門】Pythonアプリを起動するランチャソフトの作り方
- 【PythonでGUIアプリ入門】OpenCV、PySimpleGUIによるPCカメラ映像を使った映像加工アプリの作り方
- 【PythonでGUIアプリ入門】OpenCV、PySimpleGUIで、PCカメラで撮影した映像を表示するアプリの作り方
- 【PythonでGUIアプリ入門】OpenCV、PySimpleGUIを使った、メディアプレイヤーアプリの作り方
コメント