
PySimpleGUIでは、ポップアップが簡単に扱え、いろんな種類が用意されています。GUIアプリの基本である、ポップアップの使い方を紹介します。
この記事では、GUIアプリ製作に必要なポップアップの作り方を紹介します。
ポップアップには、結果を表示するタイプと、ユーザになにかしらの入力を促すものがありますが、今回の記事では、結果を表示するタイプを紹介します。
ポップアップ出力
ポップアップは、ユーザーに結果を表示する方法です。
ポップアップを呼び出すたびに、新しいポップアップウィンドウが作成されます。
ポップアップは、ユーザーがポップアップウィンドウを閉じるまで、プログラムは実行を停止します。
ポップアップの種類
ポップアップには、以下の種類があります。
種類 | 説明 |
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アプリに必要なポップアップを作成する方法を紹介しました。
Pythonでプログラムを作るのなら、ラズパイが安くて、環境構築も楽で、おすすめです。
Raspberry Pi は、Raspberry Pi Foundationによって開発された低価格で小型のシングルボードコンピュータです。最初は教育目的で2012年にリリースされましたが、その手頃な価格と高性能により、教育用にとどまらず、さまざまなプロジェクトやプロトタイピングのプラットフォームとして広く利用されています。Raspberry Piは、LinuxベースのOSを主に使用し、簡単にカスタマイズ可能であるため、プログラミングやエレクトロニクスの教育、IoTデバイス、ホームオートメーション、メディアセンターなどに活用されています。
デイトラは総受講者数30,000人超の、Webスキルを学べる国内最大規模のオンラインスクールです。
動画コンテンツを見ながら自習を行い、わからないところをチャットツールで質問を行うという形式で学習を行います。そのため、時間・場所を選ばず自分のペースで学習できます。
デイトラ最大の特徴はフリーランスや副業を意識したコースを中心としていることです。Web系フリーランスに必要なスキルを学べるコースを備えており、実際に多数の受講生がフリーランスとなっています。
<オススメポイント>
1. フリーランス/副業を意識したカリキュラム
デイトラは運営陣が全員元フリーランスで、フリーランス向けメディア「東京フリーランス」の運営も行っています。そのためフリーランスに求められるスキル感や現在の流行、そして案件獲得の方法にまで精通しており、カリキュラムにもそのノウハウを反映しています。
「何かを作れるようになる」といった漠然としたゴールではなく、「実際に仕事を受けられるレベルに達する」ことをゴールとしているため、カリキュラムは非常にハイレベルです。
■提供中のコース一覧
・Web制作コース
・Webアプリ開発コース
・Webデザインコース
・Shopifyコース
・動画制作コース
・Pythonコース
・Webマーケティングコース
・AIライティングコース
・Javaコース
2. 受講生による好意的な口コミ
デイトラはTwitter・ブログともに受講生による好意的な口コミが非常に多いです。
カリキュラムやウェビナーなどのサービスの質に満足する声や、実際に案件を獲得できた・転職に成功したなどの成果報告が多数見られます。実際に受講した方の満足する声が多いからこそ、それを見た人が安心して受講に踏み切られています。
デイトラが一年間で8000人以上から受講してもらえたのも、口コミで人が人を呼ぶ構造になっているのが最大の要因です。
3. 圧倒的なコストパフォーマンス
デイトラは一年間のサポート付きで99,800円と格安でサービスを提供しています(例:Web制作コース)。一般的なプログラミングスクールが数十万円の受講料でサポート期間も三ヵ月ほどであることが多いため、それらに比べて非常に安価な価格設定となっています。
さらに、卒業後はカリキュラムの閲覧が不可になるスクールも多い中、デイトラは一度受講したらその後もカリキュラムを見放題です。カリキュラムは随時アップデートされるため、「常に最新の情報を提供してくれる教材」として活用される方も多いです。
デイトラは完全オンラインで教室を持たないスクールで、受講生の口コミによる集客が中心となっています。そのため固定費・広告費を抑え、格安でサービス提供を行えています。
デイトラ


- 【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を使った、メディアプレイヤーアプリの作り方
コメント