PySimpleGUIのサンプル
数日前イメージビューワーで次に作ってみたい画面の形がそのままあったので
入れてみることにしました。
インストール
$ sudo pip3 install pysimplegui
私はこれでハマってしまったので軽く最後までみてください。
環境によって正解が異なるようです。
なんなく入ってサンプルをそのままsimple.pyとして実行
ModuleNotFoundError: No module named 'PySimpleGUI'
ないと言われる
もう一度入れてみる
3.6にちゃんとありますがなと言われる
python3.6の指定で起動 エラーです
ImportError: cannot import name '_imaging'
エラー内容をググるとpillowが最新ではないといった情報をゲット
エラーのPIL site-packagesは3.7
PIL 旧名がpollowをアップグレードする。
すでに最新です。
どこに入れているのか確認 2.7 そんなことはない。
この辺で3.6 消しちゃるとググると Ubuntu18.04が動かなくなるからやめなはれと、さとされる。
3.7のPILもアップグレード
しかしすでに最新。
エラーも変わらず
pysimpleguiのインストール先を3.7に ついに動きました。
pip3.7なんて指定ができるの初めて知りました。
$ sudo pip3.7 install pysimplegui
この環境での正解でした。
実行環境
Ubuntu 18.04.4 LTS
Python 3.7.5
ビューワーについて
プログラムは参考文献のサイトの一番下にあったプログラム
プログラムをコピペして、画像があるフォルダにプログラムを保存
78行目のdefault_picをフォルダに存在する画像の名前に変更すれば動きました。
(動くサンプルが置いてあると助かります。)
参考文献
https://pbaumgarten.com/python/gui-with-pysimplegui.html
追記
imageのサイズを500x500に変換してしまう所を500x500内で元と同じ比率で表示に変更してみました。
def get_image_as_data(filename, width=None, height=None):
# from PIL import Image # use `pip install Pillow` to install PIL
# import io
im = Image.open(filename)
#リサイズ修正
w, h = im.size
n_width = width
n_height = h/w*width
if w/width<h/height:
n_width = w/h*height
n_height = height
if isinstance(width, int) and isinstance(height, int): # Resize if dimensions provided
im = im.resize((int(n_width), int(n_height)))
im_bytes = io.BytesIO()
im.save(im_bytes, format="PNG")
return im_bytes.getvalue()