返回顶部
首页 > 资讯 > 后端开发 > Python >python使用PySimpleGUI设置进度条及控件使用
  • 508
分享到

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

pythonPySimpleGUI进度条python进度条 2022-06-02 22:06:48 508人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

PySimpleGUI 使用起来感觉比tkinter要方便,当然我也没怎么用过这两者。只是学习模拟一下任务进度完成情况。 安装 pip install PySimpleGUI 一、简单进度条使用 PySimple

PySimpleGUI 使用起来感觉比tkinter要方便,当然我也没怎么用过这两者。只是学习模拟一下任务进度完成情况。

安装

pip install PySimpleGUI

一、简单进度条使用

PySimpleGUI有一个一条命令即可展示进度条的控件。one_line_progress_meter


import time
import PySimpleGUI as sg


if __name__ == '__main__':
    sg.one_line_progress_meter('进度条标题',
                               10,
                               100,
                               'key1',
                               '内容')
    # sg.one_line_progress_meter()
    time.sleep(10)

进度条1

基本参数
前面的参数分别代表
进度条标题,
进度条当前进度,
进度条最大进度,
进度条的 key, (key相同代表是同一个进度条)
进度条传入参数(可以是多个非关键字参数)。


sg.one_line_progress_meter('进度条标题',
                           10,
                           100,
                           'key1',
                           '内容1')

其它常用参数orientation
由于参数*args 的存在,调用时如果希望传入自定义参数,那么前面的基本参数需要使用非关键字形式传入。当然也可以不传入自定义参数。
orientation 表示 进度条是横向的或是纵向的。
h横向 v纵向(默认)


 sg.one_line_progress_meter(title='进度条标题2',
                               current_value=20,
                               max_value=100,
                               key='key2',
                               orientation='h')

进度条2

模拟进度条一步步填满


import time
import PySimpleGUI as sg


if __name__ == '__main__':
    for i in range(1000):
        time.sleep(0.02)    # 模拟0.02s 完成了千分之一的任务
        sg.one_line_progress_meter(
            '进度条',
            i+1,
            1000,
            'key',
            '测试使用进度条',
            orientation='h'
        )

进度条3

此处休眠时间可以当做完成任务的时间。没完成一点任务进度条就会增加。

但实际上真正运行时有很多耗时任务执行时会阻塞进度条。使进度条陷入未响应状态(如第一个图片)。所以一般会把耗时任务使用多线程执行,执行完成后想办法通知进度条更新状态。注(PySimpleGUI组件需要运行在主线程,参见源文档说明)

one_line_progress_meter虽然方便,但样式无法控制,其上也有很多不关心的显示无法去除。。。

附。PySimpleGUI的弹窗使用。


sg.popup('注意!')
sg.popup_ok('默认弹窗')
sg.popup_yes_no('带Yes和No按钮的弹窗')
sg.popup_cancel('带cancel按钮的弹窗')
sg.popup_ok_cancel('带OK和cancel按钮的弹窗')
sg.popup_error('带红色error按钮的弹窗')
sg.popup_auto_close('几秒后自动关闭的弹窗')
sg.popup_auto_close('10秒后自动关闭的弹窗', auto_close_duration=10)

二、进度条控件使用

普通方法展示进度条控件。需要大概知晓布局和窗口的关系。


import PySimpleGUI as sg

# 布局,是一个用户定义的二维列表。
# 第一维德元素分居不同的行上,第二维度上的元素们居于同一行,不同列上
# 此处定义的列表  由三部分组成 Text文件 ProgressBar进度条 Cancel取消按钮构成
# Text Progress等有各自的参数设置,如size等。此处不再赘述
layout = [[sg.Text('任务完成进度')],
          [sg.ProgressBar(1000, orientation='h', size=(20, 20), key='progressbar')],
          [sg.Cancel()]]

# window只需将自定义的布局加载出来即可 第一个参数是窗口标题。
window = sg.Window('机器人执行进度', layout)

# 根据key值获取到进度条
progress_bar = window['progressbar']

# window的read函数分为同步和异步,
# 不带timeout参数即为同步函数 一直等到手动点击按钮才会返回。
# 带timeout参数不为None的为异步函数,timeout时间内无时间或者点击了按钮都会产生结果。
# 异步方式不会阻塞后面的程序运行。
for i in range(1000):	# 循环
    event, values = window.read(timeout=10)
    if event == 'Cancel' or event is None:
        break
    progress_bar.UpdateBar(i + 1)

window.close()

进度条4

此处依然是使用的for循环将进度条填满。下面使用线程模拟任务进度完成。

三、模拟任务完成度 进度条

使用线程模拟任务进度完成。当然,没有现实的任务,所以还是使用for循环加休眠组成。。。当然,与原来还是有区别的。因为任务在线程内完成,完成后需要通知主线程进度条更新。


import random
import time
from queue import Empty

import PySimpleGUI as sg
import threading
import queue

# 布局,是一个用户定义的二维列表。
# 第一维德元素分居不同的行上,第二维度上的元素们居于同一行,不同列上
# 此处定义的列表  由三部分组成 Text文件 ProgressBar进度条 Cancel取消按钮构成
layout = [[sg.Text('任务完成进度')],
          [sg.ProgressBar(100, orientation='h', size=(50, 20), key='progressbar')],
          [sg.Cancel()]]

# window只需将自定义的布局加载出来即可 第一个参数是窗口标题。
window = sg.Window('机器人执行进度', layout)

# 根据key值获取到进度条
progress_bar = window['progressbar']

# 队列 后进先出
q = queue.Queue()


def task_1():
    global q
    for i in range(100):
        # 因为要大于window.read设置超时时间100ms 保证读取时队列最多只有一个元素
        time.sleep(random.random() + 0.1)
        q.put(i+1)    # 向队列中放入当前任务完成度

# 创建多线程 设置以保护模式启动,即主线程运行结束,子线程也停止运行
worker_task = threading.Thread(target=task_1)
worker_task.setDaemon(True)
worker_task.start()

while True:     # 死循环不断读取队列中数据,直到读到100
    # event 就是返回的事件
    # 如点击Cancel后    event=Cancel
    event, values = window.read(timeout=100)
    if event == 'Cancel' or event is None:
        # 点击取消按钮或者返回事件为 None
        break

    # 10ms 无操作算超时event会等于 __TIMEOUT__
    # 其实不用判断
    try:
        # get是等待读取,直到读取到数据
        #  get_nowait 不等待,读取不到数据 就报异常
        progress_value = q.get_nowait()
    except Empty:   # 没有读取到数据的话,继续window.read
        continue
    else:   # 读取到数据
        progress_bar.UpdateBar(progress_value)
        if progress_value == 100:   # 进度满跳出循环
            break

window.close()

任务完成进度

以上就是python使用PySimpleGUI设置进度条的详细内容,更多关于Python PySimpleGUI进度条的资料请关注编程网其它相关文章!

--结束END--

本文标题: python使用PySimpleGUI设置进度条及控件使用

本文链接: https://lsjlt.com/news/10908.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python使用PySimpleGUI设置进度条及控件使用
    PySimpleGUI 使用起来感觉比tkinter要方便,当然我也没怎么用过这两者。只是学习模拟一下任务进度完成情况。 安装 pip install PySimpleGUI 一、简单进度条使用 PySimple...
    99+
    2022-06-02
    python PySimpleGUI进度条 python 进度条
  • Python tkinter进度条控件(Progressbar)的使用
    目录1 属性1.1 cursor1.2 length1.3 maximum1.4 mode1.5 orient1.6 style1.7 takefocus1.8 variable1....
    99+
    2024-04-02
  • mfc进度条控件怎么使用
    MFC进度条控件的使用步骤如下:1. 在对话框设计器中添加进度条控件。2. 为进度条控件设置ID号。3. 在对话框类的头文件中添加进...
    99+
    2023-06-13
    mfc进度条
  • MFC进度条控件如何使用
    MFC进度条控件可以通过以下步骤来使用:1. 在资源编辑器中添加一个进度条控件。可以通过拖放的方式将进度条控件添加到对话框或窗口中。...
    99+
    2023-09-15
    MFC
  • Python进度条的使用
    在使用Python处理比较耗时操作的时候,为了便于观察处理进度,就需要通过进度条将处理情况进行可视化展示,以便我们能够及时了解情况。这对于第三方库非常丰富的Python来说,并不是什...
    99+
    2024-04-02
  • 怎么在Android中使用progressbar进度条控件
    怎么在Android中使用progressbar进度条控件?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1)进度条ProgressBar使用方法在layout布...
    99+
    2023-05-30
    android progressbar
  • android ListView和ProgressBar(进度条控件)的使用方法
    ListView控件的使用:ListView控件里面装的是一行一行的数据,一行中可能有多列,选中一行,则该行的几列都被选中,同时可以触发一个事件,这种控件在平时还是用得很多的。...
    99+
    2022-06-06
    进度条 方法 progressbar listview Android
  • Xamarin XAML语言中如何使用方法设置进度条进度
    这篇文章将为大家详细讲解有关Xamarin XAML语言中如何使用方法设置进度条进度,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在ProgressBar中定义了一个ProgressTo方法,此方法也可以...
    99+
    2023-06-04
  • Python进度条tqdm的使用方法
    本篇内容介绍了“Python进度条tqdm的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言有时候在使用Python处理比较耗时操...
    99+
    2023-06-20
  • Xamarin XAML语言中怎么使用Progress属性设置进度条进度
    这篇文章将为大家详细讲解有关Xamarin XAML语言中怎么使用Progress属性设置进度条进度,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Xamarin XAML语言教程Progress属性设置进...
    99+
    2023-06-04
  • python如何使用tqdm制作进度条
    这篇文章主要介绍了python如何使用tqdm制作进度条,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用tqdm制作进度条TQDM库使你可以为Python和CLI创建快速地...
    99+
    2023-06-27
  • Xamarin XAML语言中如何使用属性设置进度条的当前进度
    这篇文章主要为大家展示了“Xamarin XAML语言中如何使用属性设置进度条的当前进度”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Xamarin XAML语言中如何使用属性设置进度条的当前进...
    99+
    2023-06-04
  • Android 进度条使用详解及示例代码
    在这里,总结一下loading进度条的使用简单总结一下。 一、说起进度条,必须说说条形进度条,经常都会使用到嘛,特别是下载文件进度等等,还有像腾讯QQ安装进度条一样,有个进度总...
    99+
    2022-06-06
    进度条 示例 Android
  • Jquery进度条插件Progress Bar怎么使用
    要使用jQuery进度条插件Progress Bar,你需要按照以下步骤进行操作: 下载jQuery库和Progress Bar...
    99+
    2023-10-26
    Jquery
  • Xamarin XAML语言教程隐藏文件使用Progress属性设置进度条
    Xamarin XAML语言教程隐藏文件使用Progress属性设置进度条Xamarin XAML语言教程隐藏文件中使用Progress属性设置进度条进度,开发者除了可以在XAML中使用Progress属性设置进度条的当前进度外,还可以在代...
    99+
    2023-06-04
  • 怎么在Python中妥善使用进度条
    这篇文章主要介绍“怎么在Python中妥善使用进度条”,在日常操作中,相信很多人在怎么在Python中妥善使用进度条问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么在Python中妥善使用进度条”的疑惑有所...
    99+
    2023-06-29
  • Python中怎么使用Flask实现进度条
    本篇内容主要讲解“Python中怎么使用Flask实现进度条”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中怎么使用Flask实现进度条”吧!使用Flask实现进度条问题描述Pyth...
    99+
    2023-06-30
  • Python异步处理返回进度——使用Flask实现进度条
    目录使用Flask实现进度条问题描述解决方案FlaskFlask使用简单异步任务使用Flask实现进度条 问题描述 Python异步处理,新起一个进程返回处理进度 解决方案 使用 t...
    99+
    2024-04-02
  • Android ProgressDialog进度条使用详解
    进度条以一种客观化的方式,让我们知道程序正在执行的情况,在程序需要时间执行任务的时候,提示进度条友好的告诉用户说,当前任务还没有完成,请稍稍等待,进度条经常使用在APP下载应用...
    99+
    2022-06-06
    progressdialog Android
  • Android ProgressBar进度条使用详解
    ProgressBar进度条,分为旋转进度条和水平进度条,进度条的样式根据需要自定义,之前一直不明白进度条如何在实际项目中使用,网上演示进度条的案例大多都是通过Button点击...
    99+
    2022-06-06
    progressbar Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作