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正则表达式匹配[]中间为任意字符的实例

    Python正则表达式匹配[]中间为任意字符的实例 在Python中,我们可以使用正则表达式进行字符串匹配和替换。在正则表达式中,[]表示字符集,可以匹配其中任意一个字符。本攻略将详细讲解如何使用Python正则表达式匹配[]中间为任意字符的实例,包括如何使用.和[]进行匹配、如何使用re模块进行匹配。 使用.进行匹配 在Python中,我们可以使用.进行匹…

    python 2023年5月14日
    00
  • python实现读取命令行参数的方法

    当我们在命令行或终端中运行Python脚本时,我们可以传递一些参数以控制程序的行为。Python提供了读取命令行参数的方法。接下来我详细讲解如何实现读取命令行参数的方法,过程中我将使用两个示例来进行说明。 步骤一:导入sys模块 要读取命令行参数,我们需要导入Python自带的sys模块。sys模块提供了许多与Python解释器和运行时环境交互的函数和变量,…

    python 2023年6月3日
    00
  • python 3的kivy中是否有任何将textinput(小部件)的文本访问到另一个类的方法?

    【问题标题】:Is there any to access textinput (widget)’s text into another class in kivy of python 3?python 3的kivy中是否有任何将textinput(小部件)的文本访问到另一个类的方法? 【发布时间】:2023-04-05 16:53:02 【问题描述】: 我…

    Python开发 2023年4月5日
    00
  • Python正则表达式教程之一:基础篇

    Python正则表达式教程之一:基础篇 正则表达式是一种用于描述字符串模式的语言,可以用于匹配、查找、替换和字符串。在Python中,我们可以使用re模块来正则表达式。本文将详细介绍Python中正则表达式的语法、字符集、转义字符以及常用函数。 基本语法 正则表达式由普通字符和字符组成,普通字符表示它本身,而元字符则有特殊的含义。下面是一些常用元字符: .匹…

    python 2023年5月14日
    00
  • Python实现简单猜数字游戏

    实现猜数字游戏的主要思路是通过Python代码生成一个随机数字,然后让玩家猜测这个数字是多少,最后比对玩家猜测的数字和随机数字是否一致。 以下是实现猜数字游戏的完整攻略: 步骤1:生成随机数字 在Python中,可以使用random模块的randint函数来生成随机整数。下面是一个例子: import random num = random.randint(…

    python 2023年5月13日
    00
  • python读写csv文件并增加行列的实例代码

    以下是 Python 读写 CSV 文件并增加行列的攻略。 1. 读取 CSV 文件 读取 CSV 文件需要用到 csv 模块。csv 模块提供了两种读取 CSV 文件的方式,即使用 csv.reader() 函数或 csv.DictReader() 函数。 1.1 使用 csv.reader() 函数 csv.reader() 函数将 CSV 文件中的每一…

    python 2023年6月3日
    00
  • python基础之字典

    以下是关于 Python 基础之字典的完整攻略: 什么是字典? 字典是一种数据类型,它的元素以键值对的形式存储。一个键值对就是一个键(key)和一个对应的值(value)构成的,键和它所对应的值之间用冒号分隔,键值对之间用逗号分隔,最后用一对大括号 ({}) 将它们包括起来。字典的键必须是唯一且不可变的对象,而值可以是任意类型的对象。 下面是一个字典的示例:…

    python 2023年5月13日
    00
  • Python四大金刚之列表详解

    Python四大金刚之列表详解 在Python中,列表(list)是一种常用的数据结构,它可以存储多个元素,并且可以动态地添加、删除、修改元素。本文将详细讲Python列表的方法,并提供两个示例说明。 创建列表 我们可以使用方括号([])或者list()函数来创建一个列表。,下面的代码了一个包含三个元素的列表: my_list = [1, 2, 3] 访问列…

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