python GUI(五)预设弹窗介绍

1、弹窗的作用

弹窗的作用:
弹窗可以包含内容是个可变参数
等效于pring语句,暂停程序的运行,让用户读取一些信息

try:
print(a)
except Exception as e:
sg.Popup(e)

2、Popup弹窗介绍

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的返回值介绍

  1. 返回为None,如果点击了关闭窗口按钮 (默认情况下可以按enter键关闭,关闭键X,以及OK按钮)

  2. 返回为按钮元素的文本信息,如果点击了按钮元素。

result =sg.Popup("test"*5,any_key_closes=True)
print(result)

3、弹窗介绍PopupGetText

弹窗特征:

显示带有文本输入字段的弹出窗口。

返回输入的文本,如果关闭/取消则返回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("密码输入错误,请重新输入")

4、弹窗介绍PopupGetFile

弹窗特征:

显示带有文本输入字段和浏览(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时,返回的是分号分割开的字符串类型

5、弹窗介绍PopupGetFolder

弹窗特征:

显示带有文本输入字段和浏览按钮的弹出窗口,以便可以选择文件夹。

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

弹窗特征:

没有标题栏,可以随意移动窗口。

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

弹窗特征:

显示一段时间后自动关闭窗口。

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)

弹窗介绍PopupCancel

弹窗特征:

含有一个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)

弹窗介绍PopupOKCancel

弹窗特征:

弹窗含有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)

弹窗介绍PopupError

弹窗特征:

含有一个带有颜色的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

弹窗特征:

显示无按钮的弹窗。


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

弹窗特征:

显示弹出窗口并立即返回


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("最后一个")
### PyQt 中创建弹窗的方法 在 PyQt 中,`QMessageBox` 是用于显示各种类型的对话框的主要类之一。下面展示了一个简单的例子来说明如何使用 `QMessageBox` 来创建一个基本的消息提示框[^1]。 ```python import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox def show_popup(): msg_box = QMessageBox() msg_box.setIcon(QMessageBox.Information) msg_box.setText("这是一个信息弹窗") msg_box.setWindowTitle("消息") msg_box.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel) result = msg_box.exec_() if result == QMessageBox.Ok: print('用户点击了OK') elif result == QMessageBox.Cancel: print('用户点击了Cancel') app = QApplication(sys.argv) window = QWidget() window.setWindowTitle('PyQt 弹窗示例') button = QPushButton('打开弹窗', window) button.clicked.connect(show_popup) window.show() sys.exit(app.exec_()) ``` 这段代码展示了如何定义一个函数 `show_popup()` ,当按下按钮时会调用此函数并显示出带有两个选项(Ok 和 Cancel)的信息型弹窗。通过设置不同的图标样式 (`setIcon`) 和标准按钮组合 (`setStandardButtons`) 可以改变弹窗外观和行为[^4]。 对于更复杂的场景,在非主线程中触发 GUI 更新操作需要注意线程安全问题;可以考虑利用信号槽机制或者将更新任务移回至主 UI 线程处理[^2]。 #### 使用预设的静态方法快速构建弹窗 除了上述方式外,还可以直接采用 `QMessageBox` 提供的一些便捷静态方法来迅速建立特定用途的消息框: - `information(parent, title, text[, buttons=QMessageBox.Ok [, defaultButton=QMessageBox.NoButton]])`: 展现一条纯文字形式的通知。 - `question(parent, title, text[, buttons=QMessageBox.StandardButtons(QMessageBox.Yes|QMessageBox.No) [, defaultButton=QMessageBox.NoButton]])`: 发起询问性质的问题,并等待回应。 - `warning(parent, title, text[, buttons=QMessageBox.StandardButtons(QMessageBox.Ok) [, defaultButton=QMessageBox.NoButton]])`: 给予警告级别的提醒。 - `critical(parent, title, text[, buttons=QMessageBox.StandardButtons(QMessageBox.Ok) [, defaultButton=QMessageBox.NoButton]])`: 报告严重错误情况下的紧急事项。 这些静态方法简化了常见交互模式下弹窗的设计过程,使得开发者能够更加专注于业务逻辑本身而不必过多关注界面细节[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值