PySimpleGUI 弹出窗口

PySimpleGUI 弹出窗口

PySimpleGUI模块中以popup*开头的函数会生成一个预定义外观的窗口。popup函数的名称表明了它的目的和按钮的配置。这些弹出式窗口只需要一行代码就可以创建。每个弹出窗口都有一定的用途,然后立即关闭。

一个最基本的弹出窗口是由 popup() 函数创建的。它可以像print()函数一样用于在窗口上显示多个参数,以及一个OK按钮。它的作用就像一个消息框,按下确定按钮后立即消失。

>>> import PySimpleGUI as psg
>>> psg.popup("Hello World")

它显示一个带有Hello World文本和OK按钮的弹出窗口。请注意,可以显示一个以上的字符串。以下是具有不同按钮配置的弹出窗口 –

  • popup_ok – 只显示带有OK按钮的弹出窗口

  • popup_ok_cancel – 显示带有确定和取消按钮的弹出窗口

  • popup_cancel – 显示带有 “取消 “按钮文本的弹出窗口

  • popup_yes_no – 显示带有Yes和No按钮的弹出窗口

  • popup_error – 显示带有彩色按钮的弹出窗口,按钮文本为 “Error”。

这些函数返回用户所按下的按钮的文本。例如,如果用户按下ok-cancel弹出窗口的OK按钮,它返回Ok,这可以用于进一步的编程逻辑。

下面的弹出窗口接受用户以文本形式的输入,或者让用户从选择器中选择文件/文件夹/日期。

  • popup_get_text – 显示带有文本输入区域的弹出窗口。如果关闭/取消,返回输入的文本或无。

  • popup_get_file – 显示带有文本输入框和浏览按钮的弹出窗口,以便用户可以选择文件。

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

  • popup_get_date – 显示一个日历窗口,获得用户的选择,以元组形式返回(月、日、年)。

当用户做出选择并按下OK按钮时,弹出窗口的返回值是文本,可以在程序中进一步使用。

下面的脚本展示了上面的一些弹出框的使用 −

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')

输出 - 上述代码产生的弹出窗口如下所示

PySimpleGUI - 弹出窗口

下面的 输出 显示在Python 控制台 中 –

You entered: Tutorialspoint
File selected F:/python36/hello.png
Folder selected F:/python36/Scripts
You clicked Yes
You pressed Cancel

所有类型的弹出窗口都是继承自弹出窗口类的各自类的对象。它们都有一套共同的属性。这些属性有一定的默认值,可以用来定制弹出窗口对象的外观和行为。下表列出了常见的参数

类型 参数 说明
Any *args 要在弹出窗口显示的值
Str title 窗口的可选标题。
(str, str) 或None button_color 显示的按钮的颜色(文本颜色,按钮颜色)
Str background_color 窗口的背景颜色
Str text_color 文字的颜色
Bool auto_close 如果为真,窗口将自动关闭
平均值 auto_close_duration 在自动关闭前保持窗口开放的时间,以秒为单位
Bool non_blocking 如果是True,那么将立即从函数中返回,而不等待用户的输入。
Tuple[font_name, size, modifiers] font 指定字体家族、大小等。Tuple或Single字符串格式’name size styles’。
Bool grab_anywhere 如果为真可以抓取任何地方来移动窗口。
(int, int) Location 在屏幕上显示窗口左上角的位置。默认为窗口在屏幕上的中心位置
Bool keep_on_top 如果为真,窗口将保持在所有当前窗口之上。
Bool modal 如果为真,则使弹出窗口表现得像一个模态窗口。默认 = True

滚动的弹出窗口

popup_scrolled() 函数生成一个带有可滚动文本框的弹出窗口。用它来显示大量的文本,包括许多行的字符数超过宽度。

大小属性是一个元组(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))

它将产生以下 输出 --

PySimpleGUI - 弹出窗口

进度条

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'
   )

它将产生以下 输出 窗口 –

PySimpleGUI - 弹出窗口

调试弹出窗口

在一个程序的执行过程中,通常需要跟踪某些变量的中间值,尽管在下面的输出中没有要求。这可以通过PySimpleGUI库中的 Print() 函数来实现。

注意 - 与Python内置的 print() 函数不同,这个函数的 “P “是大写的)。

当程序第一次遇到这个函数时,会出现调试窗口,所有后续的打印都会在其中回显。此外,我们还可以使用 EasyPrinteprint ,也有同样的效果。

下面的程序是计算用户输入的数字的阶乘值。在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,调试窗口显示以下 输出

PySimpleGUI - 弹出窗口

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程