python使用PySimpleGUI设置进度条及控件使用

yizhihongxing

下面就是详细讲解如何使用PySimpleGUI设置进度条及控件使用的完整攻略:

1. 安装 PySimpleGUI

在开始使用 PySimpleGUI 之前,需要先安装它。可以使用 pip 命令进行安装:

pip install pysimplegui

2. 创建窗口和布局

创建 PySimpleGUI 窗口非常简单,在代码中导入 PySimpleGUI,然后创建一个窗口变量并定义其布局,即可创建一个窗口:

import PySimpleGUI as sg

# 定义应用主题
sg.theme('Dark Blue 3')  

# 定义窗口布局
layout = [[sg.Text('My progress bar window')],
          [sg.ProgressBar(1000, orientation='h', size=(20, 20), key='progress')],
          [sg.Cancel()]]

# 创建窗口
window = sg.Window('Window Title', layout)  # 定义窗体大小

以上代码中,我们定义了一个名为 Window Title 的窗口,并设置了主题和布局。在布局中,我们添加了一个文本标签、一个进度条和一个 Cancel 按钮。

3. 更新进度条

在开始更新进度条之前,首先要正确定义一个变量,该变量用于存储进度的百分比。在本示例中,假设我们要将进度条设置为到达 1000 帧(或 1000 行文件),则我们定义一个变量 progress_value 来存储进度百分比:

# 用于存储进度
progress_value = 0

然后,在更新进度条之前,我们需要使用 read 方法读取窗口的变化,以便可以及时更新进度条的状态。我们可以使用 PySimpleGUI 的 Update 方法来更新进度条的值,如下所示:

while True:
    event, values = window.read(timeout=100)

    if event == 'Cancel' or event == sg.WIN_CLOSED:
        break

    # 更新进度条
    window['progress'].update_bar(progress_value + 1)

    if progress_value >= 1000:
        break 

    progress_value += 1

以上代码中,我们使用 window.read() 方法来读取窗体,以便捕获事件并更新进度条。我们使用 window['progress'].update_bar() 方法来更新进度条的值。在每次循环时,我们将变量 progress_value 增加 1,然后使用 update_bar() 方法来更新进度条。

4. 示例说明

示例一:文件读取进度条

下面是一个完整的示例,该示例使用 PySimpleGUI 创建了一个带有进度条的窗口,以显示读取文件的进度:

import PySimpleGUI as sg

sg.theme('Dark Blue 3')

layout = [[sg.Text('File Reading Progress')],
          [sg.ProgressBar(1000, orientation='h', size=(20, 20), key='progress')],
          [sg.Cancel()]]

window = sg.Window('File Reader', layout)

file = open('my_file.txt', 'r')
num_lines = sum(1 for line in file)
file.close()

progress_value = 0

with open('my_file.txt', 'r') as file:
    while True:
        event, values = window.read(timeout=100)

        if event == 'Cancel' or event == sg.WIN_CLOSED:
            break

        line = file.readline()
        if not line:
            break

        # 更新进度条
        progress_value += 1
        window['progress'].update_bar(progress_value)

file.close()
window.close()

在示例中,我们打开一个文本文件 my_file.txt,预计文件中有 1000 行。我们使用 sum 方法预先处理文件中行的数目,这样可以减少代码中的代码,并确保进度条到达 100%。

然后,在主循环中,我们使用 window.read() 方法读取窗口,以便自动更新进度条的状态。我们读取文件的每一行,并使用 update_bar() 方法来显示文件读取的进度。文件读取完成后,我们关闭文件并关闭窗口。

示例二:多个进度条

PySimpleGUI 还支持多个进度条,使其成为创建示例并监视其进度的强大工具。

在下面的示例中,我们为水果服务的订单创建了一个窗口,它包含一个完整配送订单的进度条,以及每个水果的独立进度条(苹果,香蕉和橙子):

import PySimpleGUI as sg
import time

sg.theme('Dark Blue 3')

apples = 50
bananas = 100
oranges = 20
total_orders = apples + bananas + oranges

# 定义布局
layout = [[sg.Text('Order Progress')],
          [sg.ProgressBar(total_orders, orientation='h', size=(40,10), key='orders')],
          [sg.Text('Apple')],
          [sg.ProgressBar(apples, orientation='h', size=(20, 20), key='apple_progress')],
          [sg.Text('Bananas')],
          [sg.ProgressBar(bananas, orientation='h', size=(20, 20), key='banana_progress')],
          [sg.Text('Oranges')],
          [sg.ProgressBar(oranges, orientation='h', size=(20, 20), key='orange_progress')],
          [sg.Cancel()]]

# 创建窗口
window = sg.Window('Fruit Order Progress', layout)

# 定义变量
orders_complete = 0
apple_complete = 0
banana_complete = 0
orange_complete = 0

while True:
    event, values = window.Read(timeout=10)

    if event == 'Cancel' or event == sg.WIN_CLOSED:
        break

    # 更新订单进度条
    if orders_complete < total_orders:
        window['orders'].update_bar(orders_complete + 1)
        orders_complete += 1

    # 更新水果进度条
    if apple_complete < apples and orders_complete >= apple_complete:
        window['apple_progress'].update_bar(apple_complete + 1)
        apple_complete += 1
    if banana_complete < bananas and orders_complete >= apple_complete + banana_complete:
        window['banana_progress'].update_bar(banana_complete + 1)
        banana_complete += 1
    if orange_complete < oranges and orders_complete >= apple_complete + banana_complete + orange_complete:
        window['orange_progress'].update_bar(orange_complete + 1)
        orange_complete += 1

window.close()

在本示例中,我们创建了一个名为 Fruit Order Progress 的窗口,并将订单进度条、苹果进度条、香蕉进度条和橙子进度条添加到该窗口中。我们还定义了变量来跟踪我们处理的水果数量、订单数量和进度百分比。

在主循环中,我们首先使用 window.read() 方法读取窗口。然后,我们更新订单进度条和各个水果进度条的状态。请注意,在更新每个进度条之前,我们都检查该条所需的任务是否已完成。如果已经完成,则不更新该进度条。

最后,当事件为 Cancel 时或窗口关闭时,我们退出主循环并关闭窗口。

以上就是使用 PySimpleGUI 设置进度条及控件的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python使用PySimpleGUI设置进度条及控件使用 - Python技术站

(0)
上一篇 2023年6月5日
下一篇 2023年6月5日

相关文章

  • python读取mysql数据绘制条形图

    让我来为你讲解一下如何使用 Python 读取 MySQL 数据并绘制条形图。 第一步:连接数据库 要使用 Python 读取 MySQL 数据,首先需要通过 pymysql 模块建立与数据库的连接。连接过程可以分为三个步骤: 导入 pymysql 模块。 pythonimport pymysql 创建数据库连接。 “`python 填写数据库连接信息 d…

    python 2023年6月3日
    00
  • python 爬取吉首大学网站成绩单

    本攻略将介绍如何使用Python爬虫爬取吉首大学教务系统中的成绩单。我们将使用requests库和BeautifulSoup库获取成绩单数据,并使用pandas库将数据保存到CSV文件中。我们将提供两个示例代码,分别用于获取单个学期和多个学期的成绩单数据。 安装所需库 在开始前,我们需要安装requests、BeautifulSoup和pandas库。我们可…

    python 2023年5月15日
    00
  • 详解Python如何查看一个函数的参数

    下面是关于如何查看 Python 函数参数的攻略。具体步骤如下: 步骤1:查看函数文档 首先,我们可以查看函数的文档来了解其参数。 Python 在函数内置文档中提供了对函数参数的详细描述。可以在交互式解释器中使用 help() 函数来查看函数文档,也可以使用 __doc__ 属性来打印函数文档。 同样,我们也可以使用 help() 函数或 __doc__ …

    python 2023年6月5日
    00
  • Python 使用列表、字典和set

    Python 是一种广泛应用的编程语言,它提供了丰富的数据结构,包括列表、字典和集合。本篇攻略将详细介绍如何使用这三种数据结构。 列表 列表是 Python 中最常用的一种数据结构,通常用于存储一组有序的数据,可以包含任意类型的元素。列表可通过方括号 [] 来创建。 创建列表 例如,要创建包含整数 1、2、3、4、5 的列表,可以使用如下代码: number…

    python-answer 2023年3月25日
    00
  • Python创建一个自定义视频播放器的实现

    下面我会详细介绍一下如何在 Python 中创建一个自定义的视频播放器。 步骤一:安装必要的库 首先,我们需要安装一些必要的库来播放视频文件。这包括: OpenCV:一个计算机视觉库,支持Python。用于处理视频流和图像。 使用pip命令来安装:pip install opencv-python Pygame:一个用于创建游戏和多媒体应用的Python库。…

    python 2023年6月5日
    00
  • python 截取 取出一部分的字符串方法

    当需要处理字符串的时候,有时候需要取出字符串的一部分。Python提供了多种方法来截取字符串的指定部分。以下是一些常用的方法: 1. 使用字符串切片 在Python中,可以使用字符串切片来截取字符串的一部分。具体的格式为: str[start:end:step] 其中,str代表需要截取的字符串,start代表起始位置,end代表结束位置(不包括该位置的字符…

    python 2023年6月5日
    00
  • python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)

    在Python中,可以使用json模块进行JSON数据格式的转换。json模块提供了dumps()和loads()方法,用于将Python对象转换为JSON字符串和将JSON字符串转换为Python对象。此外,还可以使用dicttostr()和strtodict()方法,用于将字典转换为JSON字符串和将JSON字符串转换为字典。以下是详细的攻略,介绍Pyt…

    python 2023年5月14日
    00
  • python 类详解及简单实例

    Python 类详解及简单实例 类和实例 在Python中,我们使用class来定义一个类,实例化一个类得到一个对象,这是面向对象编程的基本概念。 class MyClass: pass my_instance = MyClass() # 实例化一个对象 我们可以使用type()函数来查看对象的类型,如: print(type(my_instance)) #…

    python 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部