PR

【Python(PySimpleGUI)でGUIアプリ入門】ポップアップ(popup)の使い方

PySimpleGUI
スポンサーリンク
けんろう
けんろう

PySimpleGUIでは、ポップアップが簡単に扱え、いろんな種類が用意されています。GUIアプリの基本である、ポップアップの使い方を紹介します。

この記事では、GUIアプリ製作に必要なポップアップの作り方を紹介します。

ポップアップには、結果を表示するタイプと、ユーザになにかしらの入力を促すものがありますが、今回の記事では、結果を表示するタイプを紹介します。

ポップアップ出力

ポップアップは、ユーザーに結果を表示する方法です。
ポップアップを呼び出すたびに、新しいポップアップウィンドウが作成されます。
ポップアップは、ユーザーがポップアップウィンドウを閉じるまで、プログラムは実行を停止します。

ポップアップの種類

ポップアップには、以下の種類があります。

種類説明
popup OK ボタンを表示
popup_okOK ボタンを表示
popup_yes_no Yes と No ボタンを表示
popup_cancelCancelled ボタンを表示
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
)

名前タイプ意味
*argsAnyポップアップに表示させたい文章
titlestrウィンドウのタイトル。
何も指定されていない場合は、
代わりに最初の引数が使用されます。
button_colorTuple[str, str]
or None
ボタンの色(テキストの色、ボタンの色)
background_colorstrウィンドウの背景色
text_colorstrテキストの色
auto_closeboolTrueの場合、ウィンドウは自動的に閉じます
auto_close_duration  int自動的に閉じる前にウィンドウを
開いたままにする時間(秒単位)
custom_textTuple[str, str]
or str
ボタンに表示するテキストを
含む文字列または文字列のペア
non_blockingboolTrueの場合、ユーザーの入力を
待たずに関数からすぐに戻ります。
iconstr or
bytes
ウィンドウに表示するアイコン。
ウィンドウ呼び出しと同じ形式
line_widthint文字単位の行の幅。
デフォルトは、MESSAGE_BOX_LINE_WIDTH
です
fontstr or
Tuple[
font_name,
size,
modifiers]
フォントファミリー、サイズなどを指定します
no_titlebarboolTrueの場合、
ウィンドウの周囲のフレームと
上部のタイトルバーは表示されません
grab_anywhereboolTrueの場合、
ウィンドウを移動するために
どこでもつかむことができます。
no_titlebarがTrueの場合、
grab_anywhereも有効に
なっている可能性があります
locationTuple[int, int]  ウィンドウの左上隅を表示する画面上の場所。
デフォルトは画面中央のウィンドウです
keep_on_topboolTrueの場合、
ウィンドウは現在のすべてのウィンドウの上
に残ります
any_key_closesboolTrueの場合、
ウィンドウのreturn_keyboard_eventsが
オンになり、
キーが押されるとすぐにウィンドウが閉じます。
通常、リターンキーはウィンドウを閉じるだけです。
デフォルトはfalseです。
imagestr or bytesポップアップウィンドウの
上部に含める画像
modalboolTrueの場合、
ポップアップはモーダルウィンドウ
のように動作します
他のすべてのウィンドウは、
このウィンドウが閉じられるまで動作しません。
デフォルト= True
RETURNstr 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
)

名前タイプ意味
*argsAny表示するアイテム
titlestrウィンドウに表示するタイトル。
button_colorTuple[str, str]
or str
ボタンの色(前景、背景)
yes_noboolTrueの場合、
[OK]の代わりに[はい]ボタンと[いいえ]ボタン
を表示します
auto_closeboolTrueウィンドウが自動的に閉じる場合
auto_close_duration  int or float古いバージョンはintのみを受け入れます。
ウィンドウが閉じるまでの秒単位の時間
size(int、int)(w、h)w =文字幅、h =行高
locationTuple[int, int]   ウィンドウの左上隅を配置する画面上の場所
non_blockingboolTrueの場合、
通話はユーザー入力を待つのではなく、
すぐに戻ります
background_colorstr背景の色
text_colorstrテキストの色
no_titlebarboolTrueの場合、
タイトルバーは表示されません
grab_anywhereboolTrueの場合、
どこでもつかんでウィンドウを移動できます
(デフォルト= False)
keep_on_topboolTrueの場合、
ウィンドウは現在のすべてのウィンドウの上に残ります
fontstr or
Tuple[str, int]
フォントファミリー、サイズなどを指定します
imagestr or bytesポップアップウィンドウの上部に含める画像
modalboolTrueの場合、
ポップアップはモーダルウィンドウのように動作します
他のすべてのウィンドウは、
このウィンドウが閉じられるまで動作しません。
デフォルト= True
RETURNstr 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制作コース)。一般的なプログラミングスクールが数十万円の受講料でサポート期間も三ヵ月ほどであることが多いため、それらに比べて非常に安価な価格設定となっています。

さらに、卒業後はカリキュラムの閲覧が不可になるスクールも多い中、デイトラは一度受講したらその後もカリキュラムを見放題です。カリキュラムは随時アップデートされるため、「常に最新の情報を提供してくれる教材」として活用される方も多いです。

デイトラは完全オンラインで教室を持たないスクールで、受講生の口コミによる集客が中心となっています。そのため固定費・広告費を抑え、格安でサービス提供を行えています。

デイトラ

コメント

タイトルとURLをコピーしました