🎉
[更新中1]PySimpleGUIを初学ノート
PySimpleの概要
・PythonデフォルトのGUIフレームワーク(Tkinter)のラッパー
・簡単なPythonライクな構文
・githubページ
・referenceページ
PySimpleのセットアップ
ubuntu 20でのインストール方法
※githubページを参照
インストールコマンド
python3 -m pip install PySimpleGUI
// アップグレートコマンド
// python3 -m pip install --upgrade --no-cache-dir PySimpleGUI
PySimpleGUIで小さなアプリを作る
※githubページを参照
-
pythonファイルを作成。
first_gui.pyimport PySimpleGUI as sg filename = sg.popup_get_file('ファイルを入力する') sg.popup('入力完了!', filename)
-
pythonで実行
python3 first_gui.py
-
GUIアプリが表示される
画像を表示する
-
pythonファイルを作成。
display_image.pyimport PySimpleGUI as sg layout = [ [sg.Image('/home/kiduki/file_path',size=(800,550))], ] window = sg.Window('画面を表示',layout) event, values = window.read()
-
pythonで実行
python3 display_image.py
-
画像が表示される
画像の透過部分をクリックスルーにする
ubuntuだとできなそう。
// windowsの場合はsg.Windowsの引数にtransparent_color=Trueを指定することで実現できる。
// transparent_colorがwindowsのみ対応の旨を記載しているドキュメントは見つからなかったがプログラムを実行すると、その旨を示すエラーメッセージが表示された。
タイトルバーを表示しない
タイトルバーを表示しない場合は、ウィンドウを閉じるための仕組みを作る。
以下の場合はenable_events=True
でウィンドウをクリックしたときにイベント発火するようにしている。
no_titlebar.py
import PySimpleGUI as sg
layout = [
[sg.Image(
'/home/kiduki/file_path',
size=(800, 550),
enable_events=True)]]
window = sg.Window(
'画面を表示',
layout,
no_titlebar=True)
while True:
event, values = window.read()
break
window.close()
ウィジェットの内容を更新する
- ウィジェットをアップデートするには、ボタンのクリックなどを
event, values = window.read()
で捕捉する。 -
window[(key)]
でウィジェットを指定し、各ウィジェットで提供されるメソッドを利用してプロパティを更新する。
update_contents.py
import PySimpleGUI as sg
layout = [
[sg.Text('contents', key='id1', size=(15, 3))],
[sg.Button('update', key='btn1')], [sg.Button('enlarge', key='btn2')]]
window = sg.Window(
'コンテンツの内容を更新する',
layout)
while True:
event, values = window.read()
if event is None:
break
if event == 'btn1':
window['id1'].update('update contents')
elif event == 'btn2':
window['id1'].set_size(size=(30, 6))
window.close()
ファイルの内容を表示する
python標準メソッドのopen
を利用して、ファイルの内容を表示する。
import PySimpleGUI as sg
filename = sg.popup_get_file('ファイルを入力する')
sg.popup('ファイルの内容を表示', open(filename, mode='r').read())
ウィンドウを複数表示する
sg.Window(*,*).read()
を2回実行することで、Windowをもう2つ開く。
multi_window.py
import PySimpleGUI as sg
layout = [[sg.Button("新しいWindowを開く", key="open")]]
window = sg.Window("Main Window", layout)
while True:
event, values = window.read()
if event is None:
break
if event == "open":
sg.Window("New Window", [[sg.Text("新しいWindowを開きました")]]).read()
break
window.close()
Discussion