欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python之tkinter進(jìn)度條Progressbar用法解讀

 更新時(shí)間:2023年05月09日 11:20:08   作者:qq_1471587327  
這篇文章主要介紹了Python之tkinter進(jìn)度條Progressbar用法解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Progressbar 基本概念

Progressbar 可以解釋為進(jìn)度條,主要是當(dāng)做一個(gè)工作進(jìn)度的指針,在這個(gè)控件中會(huì)有一個(gè)指針,由此指針可以了解工作進(jìn)度

構(gòu)造方法如下:

Progressbar(父對(duì)象, options, ...)

參數(shù):

  • 第一個(gè)參數(shù):父對(duì)象,表示這個(gè)進(jìn)度條將建立在哪一個(gè)窗口內(nèi)
  • 第二個(gè)參數(shù):options,參數(shù)如下
參數(shù)含義
length進(jìn)度條的長(zhǎng)度默認(rèn)是100像素
mode可以有兩種模式,下面作介紹
maximum進(jìn)度條的最大值默認(rèn)是100像素
name進(jìn)度條的名稱,供程序參考引用
orient進(jìn)度條的方向,可以是HORIZONTAL(默認(rèn)) 或者是 VERTICAL
value進(jìn)度條的目前值
variable記錄進(jìn)度條目前的進(jìn)度值

mode參數(shù)

  • determinate:一個(gè)指針會(huì)從起點(diǎn)移至終點(diǎn),通常當(dāng)我們知道所需工作時(shí)間時(shí),可以使用此模式,這是默認(rèn)模式
  • indeterminate:一個(gè)指針會(huì)在起點(diǎn)和終點(diǎn)間來(lái)回移動(dòng),通常當(dāng)我們不知道工作所需時(shí)間時(shí),可以使用此模式 Progressbar

基本應(yīng)用

例子:

import tkinter
import tkinter.ttk
root = tkinter.Tk()
root.geometry('150x120')
progressbarOne = tkinter.ttk.Progressbar(root)
progressbarOne.pack(pady=20)
# 進(jìn)度值最大值
progressbarOne['maximum'] = 100
# 進(jìn)度值初始值
progressbarOne['value'] = 20
# 橫排 長(zhǎng)度200 起點(diǎn)移至終點(diǎn)
progressbarTwo = tkinter.ttk.Progressbar(root, orient=tkinter.HORIZONTAL, length=200, mode='determinate')
progressbarTwo.pack(pady=20)
# 進(jìn)度值最大值
progressbarTwo['maximum'] = 100
# 進(jìn)度值初始值
progressbarTwo['value'] = 80
root.mainloop()

運(yùn)行結(jié)果:

注意:現(xiàn)在進(jìn)度條還不能動(dòng)!

Progressbar 動(dòng)畫設(shè)計(jì)

如果想要設(shè)計(jì)含動(dòng)畫效果的Progressbar,可以在每次更新Progressbar 對(duì)象的value值時(shí)調(diào)用update()方法,這時(shí)窗口可以依據(jù)value值重繪,這樣就可以達(dá)到動(dòng)畫效果

例子:

import time
import tkinter
import tkinter.ttk
def show():
    for i in range(100):
        # 每次更新加1
        progressbarOne['value'] = i + 1
        # 更新畫面
        root.update()
        time.sleep(0.05)
root = tkinter.Tk()
root.geometry('150x120')
progressbarOne = tkinter.ttk.Progressbar(root)
progressbarOne.pack(pady=20)
# 進(jìn)度值最大值
progressbarOne['maximum'] = 100
# 進(jìn)度值初始值
progressbarOne['value'] = 0
button = tkinter.Button(root, text='Running', command=show)
button.pack(pady=5)
root.mainloop()

運(yùn)行結(jié)果:

例子:

模擬真實(shí)下載,下載總量是10000B, 每次下載500B

def show():
    # 設(shè)置進(jìn)度條的目前值
    progressbarOne['value'] = 0
    # 設(shè)置進(jìn)度條的最大值
    progressbarOne['maximum'] = maxbyte
    # 調(diào)用loading方法
    loading()
def loading():
    # 改變變量屬性
    global byte
    # 每次運(yùn)行500B
    byte += 500
    # 設(shè)置指針
    progressbarOne['value'] = byte
    if byte < maxbyte:
        # 經(jīng)過(guò)100ms后再次調(diào)用loading方法
        progressbarOne.after(100, loading)
root = tkinter.Tk()
root.geometry('150x120')
# 設(shè)置下載初值
byte = 0
# 設(shè)置下載最大值
maxbyte = 10000
progressbarOne = tkinter.ttk.Progressbar(root)
progressbarOne.pack(pady=20)
button = tkinter.Button(root, text='Running', command=show)
button.pack(pady=5)
root.mainloop()

運(yùn)行結(jié)果:

Progressbar 的方法 start()/step()/stop()

含義如下:

  • start(interval):每隔interval時(shí)間移動(dòng)一次指針。interval的默認(rèn)值是50ms,每次移動(dòng)指針調(diào)用一次step(amount)。在step()方法內(nèi)的amount參數(shù)意義就是增值量
  • step(amount):每次增加一次amount,默認(rèn)值是1.0,在determinate模式下,指針不會(huì)超過(guò)maximum參數(shù)。在indeterminate模式下,當(dāng)指針達(dá)到maximum參數(shù)值的前一格時(shí),指針會(huì)回到起點(diǎn)
  • stop():停止start()運(yùn)行

例子:

import time
import tkinter
import tkinter.ttk
def show():
    while progressbarOne.cget('value') <= progressbarOne['maximum']:
        progressbarOne.step(2)
        root.update()
        print(progressbarOne.cget('value'))
        time.sleep(0.05)
root = tkinter.Tk()
root.geometry('150x120')
progressbarOne = tkinter.ttk.Progressbar(root, length=200, mode='determinate', orient=tkinter.HORIZONTAL)
progressbarOne.pack(pady=20)
progressbarOne['maximum'] = 100
progressbarOne['value'] = 0
button = tkinter.Button(root, text='Running', command=show)
button.pack(pady=5)
root.mainloop()

運(yùn)行結(jié)果:

使用start()方法啟動(dòng)動(dòng)畫,單擊stop按鈕停止

例子:

import tkinter
import tkinter.ttk
def run():
    progressbarOne.start()
def stop():
    progressbarOne.stop()
root = tkinter.Tk()
root.geometry('150x120')
progressbarOne = tkinter.ttk.Progressbar(root, length=200, mode='determinate', orient=tkinter.HORIZONTAL)
progressbarOne.pack(padx=5, pady=10)
progressbarOne['maximum'] = 100
progressbarOne['value'] = 0
buttonRun = tkinter.Button(root, text='Run', width=6, command=run)
buttonRun.pack(padx=10, pady=5, side=tkinter.LEFT)
buttonStop = tkinter.Button(root, text='Stop', width=6, command=stop)
buttonStop.pack(padx=10, pady=5, side=tkinter.RIGHT)
root.mainloop()

運(yùn)行結(jié)果:

indeterminate 模式

在這個(gè)模式下指針將左右移動(dòng),主要目的是讓用戶知道程序仍然在繼續(xù)工作

例子:

progressbarOne = tkinter.ttk.Progressbar(root, length=200, mode='indeterminate', orient=tkinter.HORIZONTAL)

運(yùn)行結(jié)果:

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • PYTHON繪制雷達(dá)圖代碼實(shí)例

    PYTHON繪制雷達(dá)圖代碼實(shí)例

    這篇文章主要介紹了PYTHON繪制雷達(dá)圖代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Python如何在終端彩色打印輸出

    Python如何在終端彩色打印輸出

    大家好,本篇文章主要講的是Python如何在終端彩色打印輸出,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • python數(shù)字圖像處理之估計(jì)噪聲參數(shù)

    python數(shù)字圖像處理之估計(jì)噪聲參數(shù)

    這篇文章主要介紹了python數(shù)字圖像處理之估計(jì)噪聲參數(shù),圖像復(fù)原與重建,想了解圖像處理的同學(xué),一定要好好看看
    2021-04-04
  • Python+Opencv身份證號(hào)碼區(qū)域提取及識(shí)別實(shí)現(xiàn)

    Python+Opencv身份證號(hào)碼區(qū)域提取及識(shí)別實(shí)現(xiàn)

    這篇文章主要介紹了Python+Opencv身份證號(hào)碼區(qū)域提取及識(shí)別實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Python 3.x 新特性及10大變化

    Python 3.x 新特性及10大變化

    這篇文章主要介紹了Python 3.x 新特性及10大變化,本文講解了Python之父Guido van Rossum談到了Python 3.0的構(gòu)思,Python3版本的一些變化如print() and exec() 函數(shù)、整數(shù)及除法、input()代替raw_input()等,需要的朋友可以參考下
    2015-06-06
  • Python3中zip()函數(shù)知識(shí)點(diǎn)小結(jié)

    Python3中zip()函數(shù)知識(shí)點(diǎn)小結(jié)

    本文主要介紹了Python3中zip()函數(shù)知識(shí)點(diǎn)小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python發(fā)送郵件測(cè)試報(bào)告操作實(shí)例詳解

    Python發(fā)送郵件測(cè)試報(bào)告操作實(shí)例詳解

    這篇文章主要介紹了Python發(fā)送郵件測(cè)試報(bào)告操作,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python郵件發(fā)送相關(guān)模塊使用及操作注意事項(xiàng),需要的朋友可以參考下
    2018-12-12
  • Python運(yùn)維自動(dòng)化psutil模塊的監(jiān)控和管理深入探究

    Python運(yùn)維自動(dòng)化psutil模塊的監(jiān)控和管理深入探究

    這篇文章主要為大家介紹了Python運(yùn)維自動(dòng)化psutil模塊的監(jiān)控和管理深入探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 深入解析NumPy中的Broadcasting廣播機(jī)制

    深入解析NumPy中的Broadcasting廣播機(jī)制

    在吳恩達(dá)老師的深度學(xué)習(xí)專項(xiàng)課程中,老師有提到NumPy中的廣播機(jī)制,同時(shí)那一周的測(cè)驗(yàn)也有涉及到廣播機(jī)制的題目。那么,到底什么是NumPy中的廣播機(jī)制?本文就來(lái)介紹一下
    2021-05-05
  • Python和Ruby中each循環(huán)引用變量問(wèn)題(一個(gè)隱秘BUG?)

    Python和Ruby中each循環(huán)引用變量問(wèn)題(一個(gè)隱秘BUG?)

    這篇文章主要介紹了Python和Ruby中each循環(huán)引用變量問(wèn)題,類似PHP的foreach中使用引用變量的問(wèn)題,需要的朋友可以參考下
    2014-06-06

最新評(píng)論