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

PySimpleGUI
けんろう
けんろう

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

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

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

\ Pythonでプログラムを作るのなら、ラズパイ。環境構築も楽で、おすすめです。 /

このラズパイは、キーボード一体型で省スペースでかっこいい。ディスプレーだけ用意してね

スポンサーリンク

ポップアップ出力

ポップアップは、ユーザーに結果を表示する方法です。

ポップアップを呼び出すたびに、新しいポップアップウィンドウが作成されます。

ポップアップは、ユーザーがポップアップウィンドウを閉じるまで、プログラムは実行を停止します。

ポップアップの種類

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

種類説明
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アプリに必要なポップアップを作成する方法を紹介しました。

プログラミングを趣味だけでなく、仕事にしてみませんか?

2030年にはIT人材が最大約79万人不足すると言われており(IT人材需給に関する調査/給経済産業省より)
今後もIT業界の転職市場は非常に伸びていきます!

未経験からITに業種を変えたい人は、独力で進めるより、ちゃんとしたエージェントの力を借りたほうがうまくいきます。

そこで、Freeks Careerをお勧めします。

Freeks Careerをオススメする理由
 ・無料で使用可能
 ・履歴書・職務経歴書の添削、企業紹介、面談練習と転職に必要な一通りのことを一貫してサポート
 ・紹介先に豊富な優良企業が多い
 ・現役エンジニアがキャリアアドバイザーとして転職をサポート
 ・面談練習においても、営業・人事・エンジニアからのフィードバックを受けられます
 ・企業への紹介以外にもフリーランの相談も可能

\ 無料で登録できます /

Freeks Career|未経験からIT業界へ転職!無料人材紹介サービスの申込

コメント

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