Open26

pysimpleguiでいろいろ

ピン留めされたアイテム
きづききづき

自環境メモ
peekでgif録画(muhenkanで録画終わり)
gnome-screenshot --areaでキャプチャ

きづききづき

vimメモ

開いているファイルの内容を引数にpython3を実行

:w !python3

前の引数を利用する。

:w !!
きづききづき

簡単にGUIアプリを作りたい
→簡単といえばPython
→pythonでGUIフレームワークのなかではpysimpleguiが簡単らしい
→pysimpleguiを試す。

きづききづき

ボタンを押し続ける、画像上をhover、でwindow.read()を実行は出来なそう。

きづききづき

linuxだと画像の透過部分をclick throughに出来なそう。

きづききづき

たぶんmouse hover関係でデフォルトで出来るのはtooltipを使った文字列の表示だけ

きづききづき

方針

  1. pysimpleguiで実現できる範囲で実装
  2. 実現できなかったところをtkinterとかを使って実装

理由:はじめからtkinterとかを触り始めると、いつもの如く途中で飽きる可能性が高いので。

きづききづき

【疑問】
以下のスクリプトを実行したとき、2つ目Windowを開いてもすぐに閉じられないのは何故?

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

以下の場合でもすぐに閉じられなかった。

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":
        win = sg.Window("New Window", [[sg.Text("新しいWindowを開きました")]])
        win.read()
        win.close()
        break

window.close()
きづききづき

pdbを利用していろいろ試すとwin.readを実行すると、

  1. windowを起動する
  2. 入力を待つ
    という動作をするらしい。
きづききづき

ただのpirntがsg.Outputに出力されるのはなんでなんだろう。
ドキュメントを見ているとprint = sg.printしているとこはあったが。。。?

きづききづき

[次にしたいこと]
複数WindowA,Bを開き、WindowAを操作することでWindowBの表示内容を更新する。