Python progressbar源码修改(支持设置进度条样式)

来源:互联网 发布:vb opc 西门子 编辑:程序博客网 时间:2024/05/22 12:17

Python progressbar源码修改(支持设置进度条样式)

                                          By qianghaohao(CodeNutter)

     默认progressbar进度条是#字符,用起来太单调,如果要设置更加美观的进度条,需要修改下源码,
修改了progressbar目录的__init__.py的ProgressBar类的构造函数,给构造函数添加了一个设置进度
条样式的参数(bar_style),在构造函数传递进度条样式参数bar_style,默认为bar_style='BST',代表
#样式,本来想改成可以通过参数直接传递进度条的样式字符,但是如果这样会存在编码问题,对初学
者使用不方便,因此通过传递各个样式的编号(BSTx)来选择不同的样式。
    在此添加了9种样式可供选择:

    修改后源码(progress目录__init__.py文件ProgressBar类的__init__(...)构造函数):
    修改后源码已上传到:http://download.csdn.net/detail/qianghaohao/9605256
    # ------------------Modified By qianghaohao--------------------------    # _DEFAULT_WIDGETS = [Percentage(), ' ', Bar()]    # Modified by qianghaohao    # Date: 2016-8-16    #    # -------------------------------------------------------------------    def __init__(self, maxval=None, widgets=None, term_width=None, poll=1,                 left_justify=True, fd=sys.stderr, bar_style = 'BST1'):        '''Initializes a progress bar with sane defaults'''        # Don't share a reference with any other progress bars        # ------------------Modified By qianghaohao--------------------------        # Don't share a reference with any other progress bars        #        # Modified by qianghaohao        # Date: 2016-8-16        # --------------------------------------- bar_style ----------------------------------------        #             BST1     BST2      BST3    BST4      BST5    BST6     BST7     BST8    BST9        # bar_style = (u'#',   u'▏',    u'▎',   u'▍',    u'▌',   u'▋',   u'▊',   u'▉',   u'█')        # ------------------------------------------------------------------------------------------        bst = {                'BST1':u'#',                'BST2':u'▏',                'BST3':u'▎',                'BST4':u'▍',                'BST5':u'▌',                'BST6':u'▋',                'BST7':u'▊',                'BST8':u'▉',                'BST9':u'█'              }        default_widgets = [Percentage(), ' ']        default_widgets.append(Bar(bst[bar_style]))        # -------------------------------------------------------------------        if widgets is None:            widgets = list(default_widgets)        self.maxval = maxval        self.widgets = widgets        self.fd = fd        self.left_justify = left_justify        self.signal_set = False        if term_width is not None:            self.term_width = term_width        else:            try:                self._handle_resize()                signal.signal(signal.SIGWINCH, self._handle_resize)                self.signal_set = True            except (SystemExit, KeyboardInterrupt): raise            except:                self.term_width = self._env_size()        self.__iterable = None        self._update_widgets()        self.currval = 0        self.finished = False        self.last_update_time = None        self.poll = poll        self.seconds_elapsed = 0        self.start_time = None        self.update_interval = 1
     使用方法:progressbar的使用还是和原先的一样,只不过在使用时可以给ProgressBar传递进度条样式参数,
默认还是‘#’样式,如果需要更加美观的进度条,则传递bar_style参数,赋值为对应的编号(BSTx)即可。使用时
将progress目录放到工程目录即可直接使用。
 使用示例代码:
import sys, timefrom progressbar import *total = 10progress1 = ProgressBar(bar_style='BST1')progress2 = ProgressBar(bar_style='BST2')progress3 = ProgressBar(bar_style='BST3')progress4 = ProgressBar(bar_style='BST4')progress5 = ProgressBar(bar_style='BST5')progress6 = ProgressBar(bar_style='BST6')progress7 = ProgressBar(bar_style='BST7')progress8 = ProgressBar(bar_style='BST8')progress9 = ProgressBar(bar_style='BST9')for i in progress1(range(total)):    time.sleep(0.1)print  '\n'for i in progress2(range(total)):    time.sleep(0.1)print  '\n'for i in progress3(range(total)):    time.sleep(0.1)print  '\n'for i in progress4(range(total)):    time.sleep(0.1)print  '\n'for i in progress5(range(total)):    time.sleep(0.1)print  '\n'for i in progress6(range(total)):    time.sleep(0.1)print  '\n'for i in progress7(range(total)):    time.sleep(0.1)print  '\n'for i in progress8(range(total)):    time.sleep(0.1)print  '\n'for i in progress9(range(total)):    time.sleep(0.1)
运行效果:

修改后源码地址:
            http://download.csdn.net/detail/qianghaohao/9605256
   
0 0
原创粉丝点击