LoginSignup
2
4

More than 1 year has passed since last update.

PySimpleGUI備忘録~いろんな引数~

Last updated at Posted at 2023-02-15

はじめに

PySimpleGUIを使用したいが、日本語版の説明が乏しくて、毎度調べるのが大変。
めんどくさいのでここを見れば思い出せるように覚えておきたいものを記録する。
基本的には、各引数を調べたい場合、公式サイトのCall Referenceを参照するとよいです。
※この記事は私が学生のときに書いていたものです。
限定公開していたけど、もったいないと思い投稿しなおしました。

目次(関数ごと)

ウィンドウの設定
sg.Window
sg.theme
レイアウト内で使用するもの
sg.Text
sg.Button
sg.Tab および sg.TabGroup

sg.Window

この関数はウィンドウを作成するときに用いる。
以下、例プログラム。

window.py
import PySimpleGUI as sg  # ライブラリの読み込み

sg.theme('LightBrown1')

def make_main():
    # ----------------------------------------メインウィンドウ作成--------------------------------------------
    # レイアウト作成
    main_layout = [[sg.Text('あいうえ', font=('メイリオ', 22))],
                   [sg.Text('')],
                   [sg.Button('', font='メイリオ', size=(20, 2), button_color=('white', '#0E2E7B'),
                              tooltip=('周波数を変更する画面に行きます'), use_ttk_buttons=True, key='周波数')],
                   [sg.Button('', font='メイリオ', size=(20, 2), button_color=('white', '#0E2E7B'),
                              use_ttk_buttons=True, key='切り出し')],
                   [sg.Button('', font='メイリオ', size=(20, 2), button_color=('white', '#0E2E7B'),
                              use_ttk_buttons=True, key='チャンネル分割')],
                   [sg.Button('', font='メイリオ', size=(20, 2), button_color=('white', '#0E2E7B'),
                              use_ttk_buttons=True, key='インパルス')],
                   [sg.Text('')]]
    # ウィンドウ作成
    return sg.Window('初期画面', main_layout, font='メイリオ', size=(600, 550), element_justification=('center'))
    # ----------------------------------------------------------------------------------------------------


window = make_main()

while True:
    event, values = window.read()

    if event == sg.WIN_CLOSED or event == "Exit":
        break

window.close()

このようなプログラムを実行すると以下の写真のような画面ができる。
File.jpg

sg.Window('初期画面', main_layout, font='メイリオ',
          size=(600, 550), element_justification=('center'))

よく使う引数は、上のようなものである。
この場合は、第一引数に作成するウィンドウのタイトル名第二引数レイアウトを格納している変数名第三引数にウィンドウ内で使用するフォント第四引数にウィンドウのサイズ第五引数にウィンドウ内の要素の配置場所(今回は真ん中)を指定している。

ほかにも、
ウィンドウ内の様々な要素のデフォルトを細かく設定したり(たくさんある)、
ウィンドウが表示される位置を調整したり(location)、
タイトルの横に表示されるアイコンの画像を変更したり(icon)(基本的にbase64を使用するべき)など、ウィンドウの引数はめっちゃたくさんあるから用途に応じて公式説明書のウィンドウの項目をチェック

sg.theme

pythonで以下のコードを実行するか、

import PySimpleGUI as sg
sg.theme_previewer()

この素晴らしいまとめサイトを見よう!
テーマの画像を全部まとめてくださっている素晴らしいページ

sg.Text

レイアウトで用いる関数の一つ
ウィンドウ内にテキストや空白を置くことができる。

sg.Text('あいうえ', font=('メイリオ', 22))

こんな感じで使う
この例では最初に置きたい文字列を記載して、第2引数でフォントと文字サイズを指定している


おすすめ引数

font=('フォント名', 文字サイズ) サイズはintを使用
pad=(文字の横の空白の幅, 文字の下の空白の幅) intを使用
key=('なまえ') このテキストをどこかで使いたいときの鍵のなまえ
grab=True Trueのとき、この要素を掴むとウィンドウを移動させることができる
tooltip='テキスト' 要素の上にマウスが乗ったときにテキストが表示される


sg.Button

こんな感じに使う

tab.py
sg.Button('', font='メイリオ', size=(20, 2),
          tooltip=('あ!マウスのってる~'),
          use_ttk_buttons=True, key='--a--')

ここにある引数は、
ボタンの上に置く文字列フォント、ボタンのサイズボタンにカーソルが乗ったときに表示されるテキストttkボタンを使用、key
です。
ttk使うとボタンが動的になるから使ってみてるけど、よくわかっていないです。
角が丸いボタンを作りたくて悩んだけど、どうやら引数ではつくれないため、画像データを作成する必要がある、、、。余裕があったら作ろ。

sg.Tab および sg.TabGroup

画面内にタブを生成する。
以下サンプルプログラム。

import PySimpleGUI as sg  # ライブラリの読み込み

sg.theme('DarkTeal')


def make_main():
    # ----------------------------------------メインウィンドウ作成--------------------------------------------
    # レイアウト作成
    # タブ0:aaa
    tab0 = [[sg.Text('ほあ~~~~~~~')],
            [sg.Button('ボタン')],
            [sg.Text(' ', size=(10, 50))]]
    # タブ1:iii
    tab1 = []

    # タブ2:uuu
    tab2 = []

    # タブ3:eee
    tab3 = []

    # タブ4:ooo
    tab4 = []

    #レイアウト統合
    main_layout = [[sg.Text('行いたい動作を選択してください', font=('メイリオ', 22))],
                   [sg.TabGroup([[sg.Tab('aaaあああああ', tab0),
                                  sg.Tab('iiiいいい', tab1),
                                  sg.Tab('uuuうううう', tab2),
                                  sg.Tab('eeeええええ', tab3),
                                  sg.Tab('oooお', tab4)]])]]
    # ウィンドウ作成
    return sg.Window('初期画面', main_layout, font='メイリオ', size=(600, 500), element_justification=('center'))
    # ----------------------------------------------------------------------------------------------------


window = make_main()

while True:
    event, values = window.read()

    if event == sg.WIN_CLOSED or event == "Exit":
        break

window.close()

こんな感じのができる
aaaaaaaaaa.png
タブだ~
タブの部分だけ切り取ります

    main_layout = [[sg.Text('行いたい動作を選択してください', font=('メイリオ', 22))],
                   [sg.TabGroup([[sg.Tab('aaaあああああ', tab0),
                                  sg.Tab('iiiいいい', tab1),
                                  sg.Tab('uuuうううう', tab2),
                                  sg.Tab('eeeええええ', tab3),
                                  sg.Tab('oooお', tab4)]])]]

sg.Tab['タブの名前', タブで使用するレイアウトの変数]
sg.TabGroup[ ( [ [sg.Tab(), sg.Tab()…] ] ) ]

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4