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

下面就是详细讲解如何使用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+requests接口压力测试500次,查看响应时间的实例

    以下是关于Python requests库实现接口压力测试并查看响应时间的攻略: Python requests库实现接口压力测试并查看响应时间 在Python中,使用requests库实现接口压力测试并查看响应时间非常方便。以下是Python requests库实现接口压力测试并查看响应时间的攻略。 使用time模块计算响应时间 使用time模块可以计算请…

    python 2023年5月14日
    00
  • Python离线安装各种库及pip的方法

    下面是Python离线安装各种库及pip的方法的完整攻略。 下载需要的库以及pip 前往Python官网下载需要的Python版本,选择合适的操作系统进行下载安装 前往PyPI下载需要的库,找到对应的版本,点击“Download files”下载。也可以使用pip download命令下载,例如 pip download pandas==1.2.4 PyPI…

    python 2023年5月14日
    00
  • python流程控制详细介绍

    下面详细介绍一下“python流程控制详细介绍”的完整攻略。 什么是流程控制 在编程中,流程控制用于按照特定的条件执行特定的代码块。Python中的流程控制有三种类型,分别为条件语句、循环语句和控制语句。 条件语句 Python中的条件语句包括if语句、if-else语句和if-elif-else语句。 if语句 if语句的语法格式为: if conditi…

    python 2023年6月6日
    00
  • Python PyQt5运行程序把输出信息展示到GUI图形界面上

    Python PyQt5是一种用于创建GUI应用程序的Python框架。它提供了各种GUI部件和工具,以帮助开发者创建各种应用程序。在这里,我们将探讨如何运行Python程序,并将其输出信息展示在GUI界面上。 首先,我们需要安装PyQt5。可以使用pip命令在终端中安装PyQt5: pip install PyQt5 接下来,我们将创建一个简单的GUI应用…

    python 2023年5月18日
    00
  • 使用python装饰器计算函数运行时间的实例

    使用Python装饰器计算函数运行时间是一个比较常见的问题。下面是对如何实现这个功能的详细攻略。 装饰器的基本理解 装饰器本质上是一个Python函数,它可以在不改变原始函数的情况下,添加一些额外的功能,例如日志记录、缓存结果,以及计算函数的运行时间。 装饰器使用“@”符号作为语法糖,放置在要被装饰的函数前面。下面是一个简单的计算函数运行时间的装饰器实现: …

    python 2023年6月3日
    00
  • python 线程的五个状态

    Python线程的五个状态包括: 新建状态(New) 就绪状态(Runnable) 运行状态(Running) 阻塞状态(Blocked) 终止状态(Terminated) 下面我们按照状态的顺序,详细讲解每一个状态及其相应的操作。 1. 新建状态(New) 新建状态是线程被创建后进入的状态。在新建状态中,子线程是无法运行的。需要通过调用start()方法进…

    python 2023年5月13日
    00
  • Python中dict和set的用法讲解

    下面是“Python中dict和set的用法讲解”的完整攻略。 1. Python中dict的用法 Python中的dict是基于哈希表实现的一种字典数据类型,它可以用于存储键值对,键值对之间是无序的。下面是dict的基本用法: 1.1 创建dict 可以使用大括号{}和键值对来创建dict。键值对用冒号:连接,多个键值对之间用逗号,隔开。 # 创建一个空的…

    python 2023年5月13日
    00
  • Python干货:分享Python绘制六种可视化图表

    Python干货:分享Python绘制六种可视化图表 本篇文章将介绍Python绘制六种常见的可视化图表,分别为折线图、散点图、直方图、条形图、饼图和热力图。其中,折线图和散点图适用于展示数值型和时间序列数据的变化趋势和分布规律;直方图和条形图适用于展示数值型数据的频数分布,两者有所差异;饼图和热力图适用于展示分类数据的占比和相关性。 折线图 折线图展示了数…

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