
- PySimpleGUI 教程
- PySimpleGUI - 首页
- PySimpleGUI - 简介
- PySimpleGUI - 环境设置
- PySimpleGUI - Hello World
- PySimpleGUI - 弹出窗口
- PySimpleGUI - 窗口类
- PySimpleGUI - 元素类
- PySimpleGUI - 事件
- PySimpleGUI - 菜单栏
- PySimpleGUI - Matplotlib 集成
- PySimpleGUI - 使用 PIL
- PySimpleGUI - 调试器
- PySimpleGUI - 设置
- PySimpleGUI 有用资源
- PySimpleGUI - 快速指南
- PySimpleGUI - 有用资源
- PySimpleGUI - 讨论
PySimpleGUI - 弹出窗口
PySimpleGUI 模块中以 `popup*` 为前缀的函数会生成具有预定义外观的窗口。弹出函数的名称指示其用途和其上存在的按钮的配置。这些弹出窗口只需一行代码即可创建。每个弹出窗口都有其特定的用途,并在使用后立即关闭。
最基本的弹出窗口由 `popup()` 函数创建。它可以像 `print()` 函数一样使用,用于在窗口上显示多个参数和一个“确定”按钮。它就像一个消息框,按下“确定”按钮后立即消失。
>>> import PySimpleGUI as psg >>> psg.popup("Hello World")
它显示一个带有“Hello World”文本和“确定”按钮的弹出窗口。请注意,可以显示多个字符串。以下是一些具有不同按钮配置的弹出窗口:
popup_ok - 只显示带有“确定”按钮的弹出窗口
popup_ok_cancel - 显示带有“确定”和“取消”按钮的弹出窗口
popup_cancel - 显示带有“取消”按钮文本的弹出窗口
popup_yes_no - 显示带有“是”和“否”按钮的弹出窗口
popup_error - 带有彩色按钮且按钮文本为“错误”的弹出窗口
这些函数返回用户按下的按钮的文本。例如,如果用户按下确定取消弹出窗口的“确定”按钮,则它返回“确定”,这可以在进一步的编程逻辑中使用。
以下弹出窗口接受用户以文本形式输入的内容,或允许用户从选择器中选择文件/文件夹/日期。
popup_get_text - 显示带有文本输入字段的弹出窗口。返回输入的文本,如果关闭/取消则返回 None
popup_get_file - 显示带有文本输入字段和浏览按钮的弹出窗口,以便用户可以选择文件。
popup_get_folder - 显示带有文本输入字段和浏览按钮的弹出窗口,以便用户可以选择文件夹。
popup_get_date - 显示一个日历窗口,获取用户的选择,并返回一个元组 (月, 日, 年)
当用户做出选择并按下“确定”按钮时,弹出的返回值就是文本,可以在程序中进一步使用。
以下脚本显示了上述一些弹出的使用方法:
import PySimpleGUI as psg text = psg.popup_get_text('Enter your name', title="Textbox") print ("You entered: ", text) file=psg.popup_get_file('Select a file', title="File selector") print ("File selected", file) folder=psg.popup_get_folder('Get folder', title="Folder selector") print ("Folder selected",folder) ch = psg.popup_yes_no("Do you want to Continue?", title="YesNo") print ("You clicked", ch) ch = psg.popup_ok_cancel("Press Ok to proceed", "Press cancel to stop", title="OkCancel") if ch=="OK": print ("You pressed OK") if ch=="Cancel": print ("You pressed Cancel") psg.popup_no_buttons('You pressed', ch, non_blocking=True) psg.popup_auto_close('This window will Autoclose')
输出 - 上述代码生成的弹出窗口如下所示:

以下输出显示在 Python 控制台上:
You entered: Tutorialspoint File selected F:/python36/hello.png Folder selected F:/python36/Scripts You clicked Yes You pressed Cancel
所有类型的弹出窗口都是从弹出窗口类继承的相应类的对象。它们都具有一组通用的属性。这些属性具有特定的默认值,可用于自定义弹出窗口对象的外观和行为。下表列出了公共参数:
类型 | 参数 | 描述 |
---|---|---|
任意 | *args | 要在弹出窗口上显示的值 |
字符串 | title | 窗口的可选标题。 |
(字符串, 字符串) 或 None | button_color | 显示的按钮的颜色 (文本颜色, 按钮颜色) |
字符串 | background_color | 窗口的背景颜色 |
字符串 | text_color | 文本颜色 |
布尔值 | auto_close | 如果为 True,则窗口将自动关闭 |
整数 | auto_close_duration | 以秒为单位的时间,在自动关闭窗口之前保持窗口打开 |
布尔值 | non_blocking | 如果为 True,则将立即从函数返回,而无需等待用户的输入。 |
元组[字体名称, 大小, 修饰符] | font | 指定字体系列、大小等。元组或单字符串格式 '名称 大小 风格' |
布尔值 | grab_anywhere | 如果为 True,则可以在任何地方抓取以移动窗口。 |
(整数, 整数) | Location | 屏幕上显示窗口左上角的位置。默认为窗口居中显示在屏幕上 |
布尔值 | keep_on_top | 如果为 True,则窗口将始终位于所有当前窗口之上 |
布尔值 | modal | 如果为 True,则弹出窗口将表现为模态窗口。默认值为 True |
可滚动弹出窗口
popup_scrolled() 函数会生成一个带有可滚动文本框的弹出窗口。使用此功能可以显示大量的文本,这些文本由许多行组成,字符数超过宽度。
size 属性是一个元组 (w, h),其中 "w" 是单行中的字符数,"h" 是一次显示的行数。如果文本的字符数/行数超过 "w" 或 "h",则文本框的水平/垂直滚动条将变为活动状态。
在下面的示例中,一个大型文件 zen.txt 将显示在一个带有可滚动文本框的弹出窗口中。该文件包含 Python 的设计原则,称为“Python 之禅”。
import PySimpleGUI as psg file=open("zen.txt") text=file.read() psg.popup_scrolled(text, title="Scrolled Popup", font=("Arial Bold", 16), size=(50,10))
它将产生以下输出:

进度计
“one_line_progress_meter”是一个弹出窗口,它显示正在进行的长时间进程(例如循环)的可视化表示。它显示某个参数的瞬时值、完成进程的估计时间和经过的时间。
在下面的示例中,逐个字符读取文本文件。进度计以进度条、估计完成所需时间和计数的瞬时值的形式显示进程的进度。
import PySimpleGUI as psg import os size = os.path.getsize('zen.txt') file=open("zen.txt") i=0 while True: text=file.read(1) i=i+1 if text=="": file.close() break print (text,end='') psg.one_line_progress_meter( 'Progress Meter', i, size, 'Character Counter' )
它将产生以下输出窗口:

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
调试弹出窗口
在程序执行期间,通常需要跟踪某些变量的中间值,尽管在以下输出中不需要。这可以通过 PySimpleGUI 库中的 `Print()` 函数实现。
注意 - 与 Python 的内置 `print()` 函数不同,此函数中的“P”是大写的。
当程序第一次遇到此函数时,调试窗口将出现,所有后续的 Print 将在此窗口中显示。此外,我们还可以使用 `EasyPrint` 或 `eprint`,它们具有相同的效果。
以下程序计算用户输入数字的阶乘值。在 for 循环中,我们希望跟踪每次迭代中 f(阶乘)的值。这是通过 Print 函数完成的,并在调试窗口中显示。
import PySimpleGUI as psg f=1 num=int(psg.popup_get_text("enter a number: ")) for x in range(1, num+1): f=f*x psg.Print (f,x) print ("factorial of {} = {}".format(x,f))
假设用户输入 5,则调试窗口将显示以下输出:
