
PySimpleGUIでは、簡単にGUIアプリが自作できます。
普段のお仕事に便利なクリップボードアプリを作ってみました。
この記事では、PySimpleGUIを使ったアプリの作り方を紹介します。
この記事に載っているサンプルコードをコピーして、Pythonで実行すれば、簡単に動きを確認できますので、是非試してみて下さい。
この記事では、初心者にもわかりやすいように、各処理の内容を、サンプルコード内にコメントとして載せています。
今回作成するアプリ
今回のアプリは、クリップボードアプリです。
アプリに登録した文章をクリップボードへ貼り付けて、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ライブラリである、PySimpleGUI、Pyperclip を使った、クリップボードアプリの作り方を紹介しました。
Pythonでプログラムを作るのなら、ラズパイが安くて、環境構築も楽で、おすすめです。
Raspberry Pi は、Raspberry Pi Foundationによって開発された低価格で小型のシングルボードコンピュータです。最初は教育目的で2012年にリリースされましたが、その手頃な価格と高性能により、教育用にとどまらず、さまざまなプロジェクトやプロトタイピングのプラットフォームとして広く利用されています。Raspberry Piは、LinuxベースのOSを主に使用し、簡単にカスタマイズ可能であるため、プログラミングやエレクトロニクスの教育、IoTデバイス、ホームオートメーション、メディアセンターなどに活用されています。
AI(人工知能)特化型プログラミングスクール「Aidemy Premium」
Aidemy Premiumは、AIや機械学習などの最先端技術の修得に留まらず、それらを活用して目標達成を実現するまでを一気通貫して支援するオンラインコーチングサービスです。
こんな思いを持っている人にオススメ
・AIエンジニア/データサイエンティストにキャリアチェンジしたい
・業務課題(研究課題)をAIを使って解決したい
・教養としてAIについて知りたい
・AIに関してのスキルを身に着け就職活動に活かしたい…
オススメポイント
・3ヶ月間集中して「AIプログラミング」を修得するオンラインコーチングサービスです。
・完全なプログラミング初心者から研究者にまで幅広く優良なコンテンツを提供します。
・通常のプログラミングスクールとは異なり、受講者の進捗管理を徹底して行います。
・専属メンターがAIの学び方から徹底的にコーチングします。
・完全オンライン完結なので、東京以外に在住・在勤の方も気兼ねなくお申込み頂けます。
実績
・日本最大級のAI/人工知能プログラミングスクール
・SaaS型AI学習サービス「Aidemy」会員登録者数 55,000名突破
・法人向けAI内製化支援サービス「Aidemy Business」導入企業数 120社突破
・第16回 日本e-Learning大賞「AI・人工知能特別部門賞」受賞
・「HRアワード2019」プロフェッショナル部門 入賞
無料ビデオカウンセリング実施中です。



- 【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を使った、メディアプレイヤーアプリの作り方
コメント