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

PySimpleGUI
けんろう
けんろう

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

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

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

広告

ポップアップ出力

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

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

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

広告

ポップアップの種類

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

popup
popup_ok
popup_yes_no
popup_cancel
popup_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_durationint自動的に閉じる前にウィンドウを
開いたままにする時間(秒単位)
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_durationint 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ライブラリである、PySimpleGUIで、GUIアプリに必要なポップアップを作成する方法を紹介しました。

コメント

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