最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python使用PySimpleGUI設(shè)置進(jìn)度條及控件使用

 更新時間:2021年06月10日 10:24:30   作者:dandanfengyun  
PySimpleGUI是一個在tkinter基礎(chǔ)上的,足夠簡單,方便,pythonic的GUI庫.本文給大家介紹python使用PySimpleGUI設(shè)置進(jìn)度條的方法及進(jìn)度條控件使用代碼,感興趣的朋友跟隨小編一起看看吧

PySimpleGUI 使用起來感覺比tkinter要方便,當(dāng)然我也沒怎么用過這兩者。只是學(xué)習(xí)模擬一下任務(wù)進(jìn)度完成情況。

安裝

pip install PySimpleGUI

一、簡單進(jìn)度條使用

PySimpleGUI有一個一條命令即可展示進(jìn)度條的控件。one_line_progress_meter

import time
import PySimpleGUI as sg


if __name__ == '__main__':
    sg.one_line_progress_meter('進(jìn)度條標(biāo)題',
                               10,
                               100,
                               'key1',
                               '內(nèi)容')
    # sg.one_line_progress_meter()
    time.sleep(10)

進(jìn)度條1

基本參數(shù)
前面的參數(shù)分別代表
進(jìn)度條標(biāo)題,
進(jìn)度條當(dāng)前進(jìn)度,
進(jìn)度條最大進(jìn)度,
進(jìn)度條的 key, (key相同代表是同一個進(jìn)度條)
進(jìn)度條傳入?yún)?shù)(可以是多個非關(guān)鍵字參數(shù))。

sg.one_line_progress_meter('進(jìn)度條標(biāo)題',
                           10,
                           100,
                           'key1',
                           '內(nèi)容1')

其它常用參數(shù)orientation
由于參數(shù)*args 的存在,調(diào)用時如果希望傳入自定義參數(shù),那么前面的基本參數(shù)需要使用非關(guān)鍵字形式傳入。當(dāng)然也可以不傳入自定義參數(shù)。
orientation 表示 進(jìn)度條是橫向的或是縱向的。
h橫向 v縱向(默認(rèn))

 sg.one_line_progress_meter(title='進(jìn)度條標(biāo)題2',
                               current_value=20,
                               max_value=100,
                               key='key2',
                               orientation='h')

進(jìn)度條2

模擬進(jìn)度條一步步填滿

import time
import PySimpleGUI as sg


if __name__ == '__main__':
    for i in range(1000):
        time.sleep(0.02)    # 模擬0.02s 完成了千分之一的任務(wù)
        sg.one_line_progress_meter(
            '進(jìn)度條',
            i+1,
            1000,
            'key',
            '測試使用進(jìn)度條',
            orientation='h'
        )

進(jìn)度條3

此處休眠時間可以當(dāng)做完成任務(wù)的時間。沒完成一點任務(wù)進(jìn)度條就會增加。

但實際上真正運(yùn)行時有很多耗時任務(wù)執(zhí)行時會阻塞進(jìn)度條。使進(jìn)度條陷入未響應(yīng)狀態(tài)(如第一個圖片)。所以一般會把耗時任務(wù)使用多線程執(zhí)行,執(zhí)行完成后想辦法通知進(jìn)度條更新狀態(tài)。注(PySimpleGUI組件需要運(yùn)行在主線程,參見源文檔說明)

one_line_progress_meter雖然方便,但樣式無法控制,其上也有很多不關(guān)心的顯示無法去除。。。

附。PySimpleGUI的彈窗使用。

sg.popup('注意!')
sg.popup_ok('默認(rèn)彈窗')
sg.popup_yes_no('帶Yes和No按鈕的彈窗')
sg.popup_cancel('帶cancel按鈕的彈窗')
sg.popup_ok_cancel('帶OK和cancel按鈕的彈窗')
sg.popup_error('帶紅色error按鈕的彈窗')
sg.popup_auto_close('幾秒后自動關(guān)閉的彈窗')
sg.popup_auto_close('10秒后自動關(guān)閉的彈窗', auto_close_duration=10)

二、進(jìn)度條控件使用

普通方法展示進(jìn)度條控件。需要大概知曉布局和窗口的關(guān)系。

import PySimpleGUI as sg

# 布局,是一個用戶定義的二維列表。
# 第一維德元素分居不同的行上,第二維度上的元素們居于同一行,不同列上
# 此處定義的列表  由三部分組成 Text文件 ProgressBar進(jìn)度條 Cancel取消按鈕構(gòu)成
# Text Progress等有各自的參數(shù)設(shè)置,如size等。此處不再贅述
layout = [[sg.Text('任務(wù)完成進(jìn)度')],
          [sg.ProgressBar(1000, orientation='h', size=(20, 20), key='progressbar')],
          [sg.Cancel()]]

# window只需將自定義的布局加載出來即可 第一個參數(shù)是窗口標(biāo)題。
window = sg.Window('機(jī)器人執(zhí)行進(jìn)度', layout)

# 根據(jù)key值獲取到進(jìn)度條
progress_bar = window['progressbar']

# window的read函數(shù)分為同步和異步,
# 不帶timeout參數(shù)即為同步函數(shù) 一直等到手動點擊按鈕才會返回。
# 帶timeout參數(shù)不為None的為異步函數(shù),timeout時間內(nèi)無時間或者點擊了按鈕都會產(chǎn)生結(jié)果。
# 異步方式不會阻塞后面的程序運(yùn)行。
for i in range(1000):	# 循環(huán)
    event, values = window.read(timeout=10)
    if event == 'Cancel' or event is None:
        break
    progress_bar.UpdateBar(i + 1)

window.close()

進(jìn)度條4

此處依然是使用的for循環(huán)將進(jìn)度條填滿。下面使用線程模擬任務(wù)進(jìn)度完成。

三、模擬任務(wù)完成度 進(jìn)度條

使用線程模擬任務(wù)進(jìn)度完成。當(dāng)然,沒有現(xiàn)實的任務(wù),所以還是使用for循環(huán)加休眠組成。。。當(dāng)然,與原來還是有區(qū)別的。因為任務(wù)在線程內(nèi)完成,完成后需要通知主線程進(jìn)度條更新。

import random
import time
from queue import Empty

import PySimpleGUI as sg
import threading
import queue

# 布局,是一個用戶定義的二維列表。
# 第一維德元素分居不同的行上,第二維度上的元素們居于同一行,不同列上
# 此處定義的列表  由三部分組成 Text文件 ProgressBar進(jìn)度條 Cancel取消按鈕構(gòu)成
layout = [[sg.Text('任務(wù)完成進(jìn)度')],
          [sg.ProgressBar(100, orientation='h', size=(50, 20), key='progressbar')],
          [sg.Cancel()]]

# window只需將自定義的布局加載出來即可 第一個參數(shù)是窗口標(biāo)題。
window = sg.Window('機(jī)器人執(zhí)行進(jìn)度', layout)

# 根據(jù)key值獲取到進(jìn)度條
progress_bar = window['progressbar']

# 隊列 后進(jìn)先出
q = queue.Queue()


def task_1():
    global q
    for i in range(100):
        # 因為要大于window.read設(shè)置超時時間100ms 保證讀取時隊列最多只有一個元素
        time.sleep(random.random() + 0.1)
        q.put(i+1)    # 向隊列中放入當(dāng)前任務(wù)完成度

# 創(chuàng)建多線程 設(shè)置以保護(hù)模式啟動,即主線程運(yùn)行結(jié)束,子線程也停止運(yùn)行
worker_task = threading.Thread(target=task_1)
worker_task.setDaemon(True)
worker_task.start()

while True:     # 死循環(huán)不斷讀取隊列中數(shù)據(jù),直到讀到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是等待讀取,直到讀取到數(shù)據(jù)
        #  get_nowait 不等待,讀取不到數(shù)據(jù) 就報異常
        progress_value = q.get_nowait()
    except Empty:   # 沒有讀取到數(shù)據(jù)的話,繼續(xù)window.read
        continue
    else:   # 讀取到數(shù)據(jù)
        progress_bar.UpdateBar(progress_value)
        if progress_value == 100:   # 進(jìn)度滿跳出循環(huán)
            break

window.close()

任務(wù)完成進(jìn)度

以上就是python使用PySimpleGUI設(shè)置進(jìn)度條的詳細(xì)內(nèi)容,更多關(guān)于python PySimpleGUI進(jìn)度條的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python實現(xiàn)的個人所得稅計算器示例

    Python實現(xiàn)的個人所得稅計算器示例

    這篇文章主要介紹了Python實現(xiàn)的個人所得稅計算器,涉及Python條件判斷與數(shù)值運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2018-06-06
  • python變量命名的7條建議

    python變量命名的7條建議

    這篇文章主要介紹了python變量命名的7條建議,如何給變量命名,如何讓它變得有意義成了程序員不可逾越的難題,需要的朋友可以參考下
    2019-07-07
  • Python中三元表達(dá)式的幾種寫法介紹

    Python中三元表達(dá)式的幾種寫法介紹

    今天小編就為大家分享一篇關(guān)于Python中三元表達(dá)式的幾種寫法介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Python常用模塊介紹

    Python常用模塊介紹

    這篇文章主要介紹了Python常用模塊介紹,本文羅列了如python運(yùn)行時服務(wù)、數(shù)學(xué)、數(shù)據(jù)結(jié)構(gòu)、算法和代碼簡化、string 和 text 處理、python數(shù)據(jù)庫訪問等模塊,需要的朋友可以參考下
    2014-11-11
  • Python?DPED機(jī)器學(xué)習(xí)之實現(xiàn)照片美化

    Python?DPED機(jī)器學(xué)習(xí)之實現(xiàn)照片美化

    本篇文章主要介紹了利用Python中的DPED工具實現(xiàn)照片一鍵美化,可以實現(xiàn)照片亮度提高和色彩鮮明度提高,代碼簡潔易懂,具有一定學(xué)習(xí)價值,感興趣的小伙伴可以了解一下
    2021-11-11
  • Pycharm使用時會出現(xiàn)的問題之cv2無法安裝解決

    Pycharm使用時會出現(xiàn)的問題之cv2無法安裝解決

    這篇文章主要介紹了Pycharm使用時會出現(xiàn)的問題之cv2無法安裝解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • python實現(xiàn)將中文日期轉(zhuǎn)換為數(shù)字日期

    python實現(xiàn)將中文日期轉(zhuǎn)換為數(shù)字日期

    這篇文章主要介紹了python實現(xiàn)將中文日期轉(zhuǎn)換為數(shù)字日期,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 一文帶你了解CNN(卷積神經(jīng)網(wǎng)絡(luò))

    一文帶你了解CNN(卷積神經(jīng)網(wǎng)絡(luò))

    CNN是神經(jīng)網(wǎng)絡(luò)中的一種,它的權(quán)值共享網(wǎng)絡(luò)結(jié)構(gòu)使之更類似于生物神經(jīng)網(wǎng)絡(luò),降低了網(wǎng)絡(luò)模型的復(fù)雜度,減少了權(quán)值的數(shù)量。本文主要講解了CNN(卷積神經(jīng)網(wǎng)絡(luò))的基礎(chǔ)內(nèi)容,想了解更多的小伙伴可以看一看這篇文章
    2021-09-09
  • Anaconda2下實現(xiàn)Python2.7和Python3.5的共存方法

    Anaconda2下實現(xiàn)Python2.7和Python3.5的共存方法

    今天小編就為大家分享一篇Anaconda2下實現(xiàn)Python2.7和Python3.5的共存方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • opencv 獲取rtsp流媒體視頻的實現(xiàn)方法

    opencv 獲取rtsp流媒體視頻的實現(xiàn)方法

    這篇文章主要介紹了opencv 獲取rtsp流媒體視頻的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08

最新評論

永嘉县| 汾西县| 林州市| 漠河县| 达拉特旗| 丽江市| 乌兰察布市| 抚宁县| 罗平县| 南华县| 霍林郭勒市| 天祝| 东平县| 武夷山市| 泗水县| 册亨县| 镇雄县| 鹿泉市| 玛多县| 遵义市| 扶沟县| 乡宁县| SHOW| 沧州市| 工布江达县| 高淳县| 南京市| 巩留县| 泰安市| 卫辉市| 精河县| 灵宝市| 肥乡县| 巴林右旗| 江川县| 浮山县| 新安县| 阳东县| 毕节市| 福泉市| 长阳|