弹窗的作用:
弹窗可以包含内容是个可变参数
等效于pring语句,暂停程序的运行,让用户读取一些信息
try:
print(a)
except Exception as e:
sg.Popup(e)
sg.popup()
orsg.Popup()
Popup(
args=*<1 or N object>,
# 可变参数
title=None,
# 弹窗标题,如果未设定,则默认显示可变参数的第一个文本作为标题。
button_color=None,
# (文本颜色,背景颜色)
background_color=None,
# 弹窗的背景颜色
text_color=None,
# 弹窗上面的文本颜色
auto_close=False,
# 如果设定为True,弹窗会自动关闭界面
auto_close_duration=None,
# 自动关闭窗口之前界面持续的时间(以秒为单位)
custom_text=(None, None),
# 自定义按钮上要显示的文本。可以设定一个或者两个
non_blocking=False,
# 非阻塞设定。如果为True,立即执行下一步。不需要等待用户的输入。
font=None,
# 字体大小,名称设定
no_titlebar=False,
# 不显示标题栏。
grab_anywhere=False,
# 如果为True,拖动界面进行移动。
keep_on_top=False,
# 如果为True,保持界面在屏幕的最前方
location=(None, None),
# 界面出现的位置
any_key_closes=False,
# 如果为True,敲打任意键盘就会关闭界面.
# 如果为False,只用X窗口关闭按钮,用户选择,以及回车键才会关闭窗口。
image=None,
# 显示图片(支持base64)
modal=True
# 模态窗口设定。
# 除非关闭此窗口否则其他界面不能进行操作。
)
import PySimpleGUI as sg
layout = [[sg.Ok()]]
windows = sg.Window('pysimplegui',layout)
while True:
event, values = windows.read()
print(event)
if event==None:
break
if event == 'Ok':
sg.Popup("第一行文本","第二行文本"*4,title='test',
button_color=("blue","red"),
text_color="black",
# auto_close=True,
auto_close_duration=20,
# custom_text=('确定','取消'),
# non_blocking=True,
font=("黑体",20),
no_titlebar=True,
grab_anywhere=True,
keep_on_top=True,
location=(0,0),
any_key_closes=True,
image="", # 路径或base64
modal=True,
)
print("看看阻塞了没有")
关于Popup的返回值介绍
返回为None,如果点击了关闭窗口按钮 (默认情况下可以按enter键关闭,关闭键X,以及OK按钮)
返回为按钮元素的文本信息,如果点击了按钮元素。
result =sg.Popup("test"*5,any_key_closes=True)
print(result)
弹窗特征:
显示带有文本输入字段的弹出窗口。
返回输入的文本,如果关闭/取消则返回None。
sg.PopupGetText()
or
sg.popup_get_text()
PopupGetText(
message,
# 显示的文本
title=None,
# 标题设定
default_text="",
# 输入框内默认文本设定
password_char="",
# 密码字符 一般设定为*
size=(None, None),
# 单行输入框的宽度和行高设定
button_color=None,
# 按钮元素的(文本颜色,背景颜色)设定
background_color=None,
# 界面背景颜色设定
text_color=None,
# 文本颜色设定
font=None,
# 字体名称和大小设定
no_titlebar=False,
# 无标题栏设定
grab_anywhere=False,
# 移动窗口设定
keep_on_top=False,
# 保持该弹窗在界面的最前方
location=(None, None),
# 窗口出现的位置设定
image=None,
# 图片上传
modal=True
#模态界面设定。如果为True,其他界面无法操作。
)
pw = '123'
for i in range(5):
result = sg.PopupGetText("请输入密码!",title="密码输入界面",
default_text="密码",
password_char='#'
)
print(result)
if result == pw:
windows = sg.Window('pysimplegui', [[sg.Text("完善信息")]])
event, value = windows.read()
exit()
elif result == None:
exit()
else:
sg.Popup("密码输入错误,请重新输入")
弹窗特征:
显示带有文本输入字段和浏览(browse)按钮的弹出窗口,以便用户可以选择文件。
sg.PopupGetFile()
or
sg.popup_get_file()
PopupGetFile(
message,
# 文本设定
title=None,
# 窗口标题设定
default_path="",
# 默认文件路径
save_as=False,
# 如果设定为True,打开按钮变成的另存为按钮,显示Save As...
multiple_files=False,
# 如果为True,可以多选。
file_types=(('ALL Files', '*.*'),),
# 设定可选文件类型。默认所有。
no_window=False,
# 直接打开文件资源管理器,不显示弹窗界面。
size=(None, None),
# 单行输入框的宽度行高的设定
button_color=None,
# 按钮元素(文本颜色,背景颜色)的设定
background_color=None,
# 整个界面的背景颜色的设定
text_color=None,
# 文本字体颜色的设定
font=None,
# 字体名称,大小设定
no_titlebar=False,
# 如果为True,不显示标题栏。
grab_anywhere=False,
# 如果为True,可以拖拽界面
keep_on_top=False,
# 如果为True,窗口保持在界面的最前方。
location=(None, None),
# 界面运行出现的初始位置)
initial_folder=None,
# 打开咨询管理器时默认的文件夹
image=None,
# 图片上传
modal=True
# 模态窗口)
sg.popup_get_file("请输入文件路径",
title="文件选择器",
default_path=r"C:\Users\Admin\Desktop\测试用例",
save_as=True,
multiple_files=True,
file_types=(("All files",'*.png'),),
no_window=True
)
返回值
关闭窗口返回的是none
在no_window=True和multiple_files=True同时为True时,返回的是元祖类型,其它情况返回的是字符串类型,当仅multiple_files=True为True时,返回的是分号分割开的字符串类型
弹窗特征:
显示带有文本输入字段和浏览按钮的弹出窗口,以便可以选择文件夹。
sg.PopupGetFolder()
or
sg.popup_get_folder()
PopupGetFolder(
message,
title=None,
default_path="",
no_window=False,
size=(None, None),
button_color=None,
background_color=None,
text_color=None,
font=None,
no_titlebar=False,
grab_anywhere=False,
keep_on_top=False,
location=(None, None),
initial_folder=None,
image=None,
modal=True)
弹窗特征:
没有标题栏,可以随意移动窗口。
PopupAnnoying(
args=*<1 or N object>,
title=None,
button_color=None,
background_color=None,
text_color=None,
auto_close=False,
auto_close_duration=None,
non_blocking=False,
font=None,
grab_anywhere=True,
keep_on_top=False,
location=(None, None),
image=None,
modal=True)
弹窗特征:
显示一段时间后自动关闭窗口。
PopupAutoClose(
args=*<1 or N object>,
title=None,
button_color=None,
background_color=None,
text_color=None,
auto_close=True,
auto_close_duration=None,
non_blocking=False,
font=None,
no_titlebar=False,
grab_anywhere=False,
keep_on_top=False,
location=(None, None),
image=None,
modal=True)
弹窗特征:
含有一个Cancelled的按钮。
PopupCancel(args=*<1 or N object>,
title=None,
button_color=None,
background_color=None,
text_color=None,
auto_close=False,
auto_close_duration=None,
non_blocking=False,
font=None,
no_titlebar=False,
grab_anywhere=False,
keep_on_top=False,
location=(None, None),
image=None,
modal=True)
弹窗特征:
弹窗含有OK和Cancel两个按钮。
PopupOKCancel(args=*<1 or N object>,
title=None,
button_color=None,
background_color=None,
text_color=None,
auto_close=False,
auto_close_duration=None,
non_blocking=False,
icon=...,
line_width=None,
font=None,
no_titlebar=False,
grab_anywhere=False,
keep_on_top=False,
location=(None, None),
image=None,
modal=True)
弹窗特征:
含有一个带有颜色的Error按钮
PopupError(args=*<1 or N object>,
title=None,
button_color=(None, None),
background_color=None,
text_color=None,
auto_close=False,
auto_close_duration=None,
non_blocking=False,
line_width=None,
font=None,
no_titlebar=False,
grab_anywhere=False,
keep_on_top=False,
location=(None, None),
image=None,
modal=True)
弹窗特征:
显示无按钮的弹窗。
PopupNoButtons(args=*<1 or N object>,
title=None,
background_color=None,
text_color=None,
auto_close=False,
auto_close_duration=None,
non_blocking=False,
line_width=None,
font=None,
no_titlebar=False,
grab_anywhere=False,
keep_on_top=False,
location=(None, None),
image=None,
modal=True)
弹窗特征:
显示弹出窗口并立即返回
PopupNoWait(args=*<1 or N object>,
title=None,
button_color=None,
background_color=None,
text_color=None,
auto_close=False,
auto_close_duration=None,
non_blocking=True,
line_width=None,
font=None,
no_titlebar=False,
grab_anywhere=False,
keep_on_top=False,
location=(None, None),
image=None,
modal=False)
sg.PopupGetFolder("请选择文件夹")
sg.popup_annoying("没有标题的弹窗")
sg.popup_auto_close("自动关闭弹窗")
sg.popup_cancel()
sg.popup_ok()
sg.popup_ok_cancel()
sg.popup_error()
sg.popup_no_border("没有按钮")
sg.popup_no_wait()
[sg.Popup(f"这是第{i}个弹窗",location=(100,100*i), non_blocking=True) for i in range(1,5)]
sg.popup("最后一个")