Pysimplegui 简明教程
PySimpleGUI - Popup Windows
PySimpleGUI 模块中以弹出窗口*前缀开头的函数会生成具有预定义外观的窗口。弹出窗口函数的名称表示其目的是否在其中提供按钮的配置。这些弹出窗口仅使用一行代码创建。每个弹出窗口都有特定的目的,然后立即关闭。
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 − 显示日历窗口,获取用户选择,以元组 (mon, day, year) 的形式返回
当用户完成选择并按下确定按钮时,弹出窗口的返回值为文本,可以在程序中进一步使用。
以下脚本显示了如何使用上述一些弹出窗口 −
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')
Output − 下面显示了上述代码生成的弹出窗口 −
Python console 上显示以下 output −
You entered: Tutorialspoint
File selected F:/python36/hello.png
Folder selected F:/python36/Scripts
You clicked Yes
You pressed Cancel
所有类型弹出窗口都是继承自弹出窗口类的各个类的对象。它们都具有相同的一组属性。这些属性具有特定的默认值,并可用于自定义弹出窗口对象的外观和行为。下表列出了通用参数 −
Type |
Parameter |
Description |
Any |
*args |
要在弹出窗口上显示的值 |
Str |
title |
窗口的可选标题。 |
(str, str) or None |
button_color |
显示的按钮颜色(文本颜色、按钮颜色) |
Str |
background_color |
Window’s background color |
Str |
text_color |
text color |
Bool |
auto_close |
如果为 True,则窗口将自动关闭 |
Int |
auto_close_duration |
在自动关闭窗口之前保持窗口处于打开状态的时间(以秒为单位) |
Bool |
non_blocking |
如果为 True,则将立即从函数返回,而无需等待用户输入。 |
Tuple[font_name, size, modifiers] |
font |
指定字体系列、大小等。元组或单字符串格式 'name size styles'。 |
Bool |
grab_anywhere |
如果为 True,则可以在任何地方点击以移动窗口。 |
(int, int) |
Location |
显示窗口的左上角在屏幕上的位置。默认为窗口在屏幕上居中 |
Bool |
keep_on_top |
如果为 True,窗口将保持在所有当前窗口之上 |
Bool |
modal |
如果为 True,则弹出窗口将表现得像模式窗口。默认 = True |
Scrolled Popup
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))
它将生成以下 output −
Progress Meter
“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'
)
它将生成以下 output 窗口 −
Debug Popup
在程序运行期间,通常需要跟踪某些变量的中间值,虽然后续的输出中不需要这些值。可以使用 PySimpleGUI 库中的 Print() 函数来实现此目的。
Note − 与 Python 的内置 print() 函数不同,此函数中的“P”为大写。
当程序第一次遇到此函数时,将显示调试窗口并在其中回显后续的所有打印内容。此外,我们可以使用 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,调试窗口会显示以下 output −