パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

PySimpleGUIを動かすまで(はまり道)

2020-08-25 | Python

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()

 


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。