zoukankan      html  css  js  c++  java
  • Python进度条Variable class版

     1 from Tkinter import *
     2 import ttk
     3 import threading
     4 import random
     5 import time
     6 
     7 class PgBarFrm(Frame):
     8     def __init__(self, root, max_len):
     9         self.root = root
    10         Frame.__init__(self, root)
    11 
    12         self.pb_val = IntVar()  # pbar variable
    13         self.pb_max = max_len   # pbar maximum
    14         
    15         self.lb_str = StringVar()   # label string
    16         self.update_label()
    17         
    18         self.pack(side=TOP, expand=1, fill=X)
    19 
    20         self.initUI()
    21 
    22     def initUI(self):
    23         self.label = Label(self, textvariable=self.lb_str)
    24         self.label.pack(side=LEFT)
    25 
    26         self.pbar = ttk.Progressbar(self, length=300, maximum=self.pb_max, variable=self.pb_val)
    27         self.pbar.pack(side=LEFT, expand=1, fill=BOTH)
    28 
    29     def update_label(self):
    30         self.lb_str.set('%d/%d' % (self.pb_val.get(), self.pb_max))
    31 
    32     def clear(self):
    33         self.pb_val.set(0)
    34         self.update_label()
    35 
    36     def step(self):
    37         new_val = (self.pb_val.get()+1)
    38         if new_val>self.pb_max:
    39             self.clear()
    40             self.step()
    41         else:
    42             self.pb_val.set(new_val)
    43             self.update_label()
    44 
    45 
    46 
    47 class DualWork:
    48     def __init__(self):
    49         self.N1 = 5
    50         self.N2 = 7
    51         self.frm1 = PgBarFrm(root, self.N1)
    52         self.frm2 = PgBarFrm(root, self.N2)
    53 
    54     def work(self):
    55         for i in xrange(self.N1):            
    56             for j in xrange(self.N2):
    57                 rnd_t = random.uniform(0, 1)
    58                 print threading.currentThread().getName(), i, j, rnd_t
    59                 
    60                 self.frm2.step()
    61                 time.sleep(rnd_t)
    62 
    63             self.frm1.step()
    64 
    65     def start(self):
    66         w_td = threading.Thread(target=self.work)
    67         w_td.start()
    68 
    69 if __name__=='__main__':
    70     root = Tk()
    71     
    72     w = DualWork()
    73     w.start()
    74 
    75     root.mainloop()
  • 相关阅读:
    Java一棵树
    Mac常用设置备忘
    全球测速工具
    mac常用软件
    APP https抓包
    spring无法启动常见原因及排查方法
    Java_cpu飙升排查
    charles_https_通过模拟器安装APP然后抓包
    源码探究Java_HashMap
    The server encountered an internal error that prevented it from fulfilling this request.(JsonMappingException: Conflicting getter definitions)
  • 原文地址:https://www.cnblogs.com/nn0p/p/3040596.html
Copyright © 2011-2022 走看看