1. 程式人生 > >Python的進度條的制作

Python的進度條的制作

sting cti mman gre sel 格式 color elf back

 1 import sys,time
 2 #導入模塊
 3 
 4 for i in range(50):
 5 #進度條的長度
 6     sys.stdout.write("#")
 7 #進度條的內容,這裏要註意了,pycharm有可能不顯示write的方法
 8     sys.stdout.flush()
 9 #刷新緩存
10     time.sleep(0.5)
11 #間隔時間,和shell的sleep差不多吧

或者

import sys
 
class progressbar(object):
 
    def __init__(self, finalcount, block_char=
.): self.finalcount = finalcount self.blockcount = 0 self.block = block_char self.f = sys.stdout if not self.finalcount: return self.f.write(\n------------------ % Progress -------------------1\n) self.f.write( 1 2 3 4 5 6 7 8 9 0\n
) self.f.write(----0----0----0----0----0----0----0----0----0----0\n) def progress(self, count): count = min(count, self.finalcount) if self.finalcount: percentcomplete = int(round(100.0 * count / self.finalcount)) if percentcomplete < 1: percentcomplete
= 1 else: percentcomplete = 100 blockcount = int(percentcomplete // 2) if blockcount <= self.blockcount: return for i in range(self.blockcount, blockcount): self.f.write(self.block) self.f.flush() self.blockcount = blockcount if percentcomplete == 100: self.f.write("\n") if __name__ == "__main__": from time import sleep pb = progressbar(8, "*") for count in range(1, 9): pb.progress(count) sleep(0.2) pb = progressbar(100) pb.progress(20) sleep(0.3) pb.progress(47) sleep(0.3) pb.progress(90) sleep(0.3) pb.progress(100) print "testing 1:" pb = progressbar(1) pb.progress(1)

或者:

# -*- coding: UTF-8 -*-

import sys, time

class ShowProcess():
    """
    顯示處理進度的類
    調用該類相關函數即可實現處理進度的顯示
    """
    i = 0 # 當前的處理進度
    max_steps = 0 # 總共需要處理的次數
    max_arrow = 50 #進度條的長度

    # 初始化函數,需要知道總共的處理次數
    def __init__(self, max_steps):
        self.max_steps = max_steps
        self.i = 0

    # 顯示函數,根據當前的處理進度i顯示進度
    # 效果為[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]100.00%
    def show_process(self, i=None):
        if i is not None:
            self.i = i
        else:
            self.i += 1
        num_arrow = int(self.i * self.max_arrow / self.max_steps) #計算顯示多少個‘>‘
        num_line = self.max_arrow - num_arrow #計算顯示多少個‘-‘
        percent = self.i * 100.0 / self.max_steps #計算完成進度,格式為xx.xx%
        process_bar = [ + > * num_arrow + - * num_line + ]                      + %.2f % percent + % + \r #帶輸出的字符串,‘\r‘表示不換行回到最左邊
        sys.stdout.write(process_bar) #這兩句打印字符到終端
        sys.stdout.flush()

    def close(self, words=done):
        print ‘‘
        print words
        self.i = 0

if __name__==__main__:
    max_steps = 100

    process_bar = ShowProcess(max_steps)

    for i in range(max_steps + 1):
        process_bar.show_process()
        time.sleep(0.05)
    process_bar.close()

或者:

from Tkinter import *

def resize(ev=None):
    label.config(font=Helvetica -%d bold % scale.get())

top = Tk()
top.geometry()

label = Label(top, text = hello world!, font = Helvetica -12 bold)
label.pack(fill=Y,expand=1)

scale = Scale(top, from_=10, to=40, orient=HORIZONTAL, command=resize)
scale.set(12)
scale.pack(fill=X, expand=1)


quit = Button(top, text="QUIT", command=top.quit, activeforeground=white, activebackground=red)
quit.pack()

mainloop()

Python的進度條的制作