PySimpleGUIでは、ポップアップが簡単に扱え、いろんな種類が用意されています。GUIアプリの基本である、ポップアップの使い方を紹介します。
この記事では、GUIアプリ製作に必要なポップアップの作り方を紹介します。
ポップアップには、結果を表示するタイプと、ユーザになにかしらの入力を促すものがありますが、今回の記事では、結果を表示するタイプを紹介します。
\ Pythonでプログラムを作るのなら、ラズパイ。環境構築も楽で、おすすめです。 /
このラズパイは、キーボード一体型で省スペースでかっこいい。ディスプレーだけ用意してね
ポップアップ出力
ポップアップは、ユーザーに結果を表示する方法です。
ポップアップを呼び出すたびに、新しいポップアップウィンドウが作成されます。
ポップアップは、ユーザーがポップアップウィンドウを閉じるまで、プログラムは実行を停止します。
ポップアップの種類
ポップアップには、以下の種類があります。
種類 | 説明 |
popup | OK ボタンを表示 |
popup_ok | OK ボタンを表示 |
popup_yes_no | Yes と No ボタンを表示 |
popup_cancel | Cancelled ボタンを表示 |
popup_ok_cancel | OK と Cancel ボタンを表示 |
popup_error | エラーボタンを表示 |
popup_auto_close | 一定時間でポップアップを消去 |
popup_quick | 一瞬だけポップアップを表示する |
popup_quick_message | 一瞬だけポップアップを表示する |
popup_no_buttons | ボタンを表示せずにポップアップを表示する |
popup_non_blocking | 一瞬だけポップアップを表示する |
popup_notify | ポップアップウィンドウではなく、通知形式になる |
関数名には命名ルールがあり、popupの後の末尾部分は表示されるボタンを示します。
例えば、
popup_yes_noは、[はい]と[いいえ]が付いたボタンのペアであることを示しています。
popup_cancelは、キャンセルボタンが付きます。
popupのサンプルコード
実際に、popupを表示させてみましょう。
#!usr/bin/env python
# -*- coding: utf-8 -*-
import PySimpleGUI as sg
sg.popup('popup') # OK ボタンを表示
sg.popup_ok('popup_ok') # OK ボタンを表示
sg.popup_yes_no('popup_yes_no') # Yes と No ボタンを表示
sg.popup_cancel('popup_cancel') # Cancelled ボタンを表示
sg.popup_ok_cancel('popup_ok_cancel') # OK と Cancel ボタンを表示
sg.popup_error('popup_error') # エラーボタンを表示
sg.popup_auto_close('popup_auto_close') # 一定時間でポップアップを消去
sg.popup_quick('popup_quick') # 一瞬だけポップアップを表示する
sg.popup_quick_message('popup_quick_message') # 一瞬だけポップアップを表示する
sg.popup_no_buttons('no_buttons') # ボタンを表示せずにポップアップを表示する
sg.popup_non_blocking('popup_non_blocking') # 一瞬だけポップアップを表示する
sg.popup_notify('popup_notify') # ポップアップウィンドウではなく、通知形式になる
実行すると、ポップアップが表示され、ボタンを押すと、次のポップアップが表示されます。
ポップアップのパラメータ
popup(
args=*<1 or N object>,
title = None,
button_color = None,
background_color = None,
text_color = None,
button_type = 0,
auto_close = False,
auto_close_duration = None,
custom_text = (None, None),
non_blocking = False,
icon = None,
line_width = None,
font = None,
no_titlebar = False,
grab_anywhere = False,
keep_on_top = False,
location = (None, None),
any_key_closes = False,
image = None,
modal = True
)
名前 | タイプ | 意味 |
*args | Any | ポップアップに表示させたい文章 |
title | str | ウィンドウのタイトル。 何も指定されていない場合は、 代わりに最初の引数が使用されます。 |
button_color | Tuple[str, str] or None | ボタンの色(テキストの色、ボタンの色) |
background_color | str | ウィンドウの背景色 |
text_color | str | テキストの色 |
auto_close | bool | Trueの場合、ウィンドウは自動的に閉じます |
auto_close_duration | int | 自動的に閉じる前にウィンドウを 開いたままにする時間(秒単位) |
custom_text | Tuple[str, str] or str | ボタンに表示するテキストを 含む文字列または文字列のペア |
non_blocking | bool | Trueの場合、ユーザーの入力を 待たずに関数からすぐに戻ります。 |
icon | str or bytes | ウィンドウに表示するアイコン。 ウィンドウ呼び出しと同じ形式 |
line_width | int | 文字単位の行の幅。 デフォルトは、MESSAGE_BOX_LINE_WIDTH です |
font | str or Tuple[ font_name, size, modifiers] | フォントファミリー、サイズなどを指定します |
no_titlebar | bool | Trueの場合、 ウィンドウの周囲のフレームと 上部のタイトルバーは表示されません |
grab_anywhere | bool | Trueの場合、 ウィンドウを移動するために どこでもつかむことができます。 no_titlebarがTrueの場合、 grab_anywhereも有効に なっている可能性があります |
location | Tuple[int, int] | ウィンドウの左上隅を表示する画面上の場所。 デフォルトは画面中央のウィンドウです |
keep_on_top | bool | Trueの場合、 ウィンドウは現在のすべてのウィンドウの上 に残ります |
any_key_closes | bool | Trueの場合、 ウィンドウのreturn_keyboard_eventsが オンになり、 キーが押されるとすぐにウィンドウが閉じます。 通常、リターンキーはウィンドウを閉じるだけです。 デフォルトはfalseです。 |
image | str or bytes | ポップアップウィンドウの 上部に含める画像 |
modal | bool | Trueの場合、 ポップアップはモーダルウィンドウ のように動作します 他のすべてのウィンドウは、 このウィンドウが閉じられるまで動作しません。 デフォルト= True |
RETURN | str or None | 押されたボタンのテキストを返します。 ユーザーがXでウィンドウを閉じた場合、 何も返されません |
ポップアップのスクロール出力
表示する情報がたくさんある場合は、ポップアップのスクロールバージョンがあります。
提供されたユーザーのテキストを含むスクロールされたポップアップウィンドウを表示します。
popup_scrolled(
args=*<1 or N object>,
title = None,
button_color = None,
background_color = None,
text_color = None,
yes_no = False,
auto_close = False,
auto_close_duration = None,
size = (None, None),
location = (None, None),
non_blocking = False,
no_titlebar = False,
grab_anywhere = False,
keep_on_top = False,
font = None,
image = None,
modal = True
)
名前 | タイプ | 意味 |
*args | Any | 表示するアイテム |
title | str | ウィンドウに表示するタイトル。 |
button_color | Tuple[str, str] or str | ボタンの色(前景、背景) |
yes_no | bool | Trueの場合、 [OK]の代わりに[はい]ボタンと[いいえ]ボタン を表示します |
auto_close | bool | Trueウィンドウが自動的に閉じる場合 |
auto_close_duration | int or float | 古いバージョンはintのみを受け入れます。 ウィンドウが閉じるまでの秒単位の時間 |
size | (int、int) | (w、h)w =文字幅、h =行高 |
location | Tuple[int, int] | ウィンドウの左上隅を配置する画面上の場所 |
non_blocking | bool | Trueの場合、 通話はユーザー入力を待つのではなく、 すぐに戻ります |
background_color | str | 背景の色 |
text_color | str | テキストの色 |
no_titlebar | bool | Trueの場合、 タイトルバーは表示されません |
grab_anywhere | bool | Trueの場合、 どこでもつかんでウィンドウを移動できます (デフォルト= False) |
keep_on_top | bool | Trueの場合、 ウィンドウは現在のすべてのウィンドウの上に残ります |
font | str or Tuple[str, int] | フォントファミリー、サイズなどを指定します |
image | str or bytes | ポップアップウィンドウの上部に含める画像 |
modal | bool | Trueの場合、 ポップアップはモーダルウィンドウのように動作します 他のすべてのウィンドウは、 このウィンドウが閉じられるまで動作しません。 デフォルト= True |
RETURN | str or None or TIMEOUT_KE | 押されたボタンのテキストを返します。 ユーザーがXでウィンドウを閉じた場合、 何も返されません |
popupスクロールのサンプルコード
このサンプルコードは、以下のポップアップを表示する。
・文字表示エリアを40文字×指定なしとする(スクロール無し)
・文字表示エリアを40文字×3文字とする(スクロール有り)
#!usr/bin/env python
# -*- coding: utf-8 -*-
import PySimpleGUI as sg
my_text= 'dsjfkjagjakljgkafjkgjflkjkfjkljdfkljk;dfj;sdfjbkl;jdsfkjkdsfljkskajdklasjkdljsakljksjakldjsakjdksajlkdjskajdklasjkdjkasjdklsajkldjaskljdksajkljakljdklasjflkdls;kflkdslfkldskfldskflksdl;fk;ldskfl;dsklsdfjkljdsfkljkldsfjkljsdklf;jkdsfl;jkfds'
sg.popup_scrolled(my_text, size=(40, None)) # 文字表示エリアを40文字×指定なしとする
sg.popup_scrolled(my_text, size=(40, 3)) # 文字表示エリアを40文字×3文字とする
文字表示エリアを40文字×指定なしとする(スクロール無し)
文字表示エリアを40文字×3文字とする(スクロール有り)
ノンブロッキングポップアップ
popup_no_wait、またはpopup_non_blockingは、ポップアップウィンドウを作成し、すぐに制御バックを返します。
non_blockingパラメータがある場合は、他のポップアップ呼び出しを非ブロッキングポップアップに変えることができます。
non_blocking=Trueに設定すると、ウィンドウが閉じられるのを待つのではなく、関数がすぐに戻ります。
この関数は、デバッグ中に何かを出力として表示したいが、ブロックによってプログラムの全体的なタイミングを変更したくない場合に非常に便利です。これらのポップアップには戻り値はありません。
Pythonでプログラムを作るのなら、ラズパイが安くて、環境構築も楽で、おすすめです。
まとめ
今回は、Pythonライブラリである、PySimpleGUIで、GUIアプリに必要なポップアップを作成する方法を紹介しました。
プログラミングを趣味だけでなく、仕事にしてみませんか?
2030年にはIT人材が最大約79万人不足すると言われており(IT人材需給に関する調査/給経済産業省より)、
今後もIT業界の転職市場は非常に伸びていきます!
未経験からITに業種を変えたい人は、独力で進めるより、ちゃんとしたエージェントの力を借りたほうがうまくいきます。
そこで、Freeks Careerをお勧めします。
Freeks Careerをオススメする理由
・無料で使用可能
・履歴書・職務経歴書の添削、企業紹介、面談練習と転職に必要な一通りのことを一貫してサポート
・紹介先に豊富な優良企業が多い
・現役エンジニアがキャリアアドバイザーとして転職をサポート
・面談練習においても、営業・人事・エンジニアからのフィードバックを受けられます
・企業への紹介以外にもフリーランの相談も可能
\ 無料で登録できます /
Freeks Career|未経験からIT業界へ転職!無料人材紹介サービスの申込- 【PythonでGUIアプリ入門】PySimpleGUI、Pyperclip を使った クリップボードアプリ の作り方
- 【PythonでGUIアプリ入門】PySimpleGUI を使った タイマーストップアプリ の作り方
- 【Python(PySimpleGUI)でGUIアプリ入門】Pythonアプリを起動するランチャソフトの作り方
- 【PythonでGUIアプリ入門】OpenCV、PySimpleGUIによるPCカメラ映像を使った映像加工アプリの作り方
- 【PythonでGUIアプリ入門】OpenCV、PySimpleGUIで、PCカメラで撮影した映像を表示するアプリの作り方
- 【PythonでGUIアプリ入門】OpenCV、PySimpleGUIを使った、メディアプレイヤーアプリの作り方
コメント