Home | History | Annotate | Download | only in idlelib
      1 from Tkinter import *
      2 
      3 class MultiStatusBar(Frame):
      4 
      5     def __init__(self, master=None, **kw):
      6         if master is None:
      7             master = Tk()
      8         Frame.__init__(self, master, **kw)
      9         self.labels = {}
     10 
     11     def set_label(self, name, text='', side=LEFT, width=0):
     12         if name not in self.labels:
     13             label = Label(self, borderwidth=0, anchor=W)
     14             label.pack(side=side, pady=0, padx=4)
     15             self.labels[name] = label
     16         else:
     17             label = self.labels[name]
     18         if width != 0:
     19             label.config(width=width)
     20         label.config(text=text)
     21 
     22 def _multistatus_bar(parent):
     23     root = Tk()
     24     width, height, x, y = list(map(int, re.split('[x+]', parent.geometry())))
     25     root.geometry("+%d+%d" %(x, y + 150))
     26     root.title("Test multistatus bar")
     27     frame = Frame(root)
     28     text = Text(frame)
     29     text.pack()
     30     msb = MultiStatusBar(frame)
     31     msb.set_label("one", "hello")
     32     msb.set_label("two", "world")
     33     msb.pack(side=BOTTOM, fill=X)
     34 
     35     def change():
     36         msb.set_label("one", "foo")
     37         msb.set_label("two", "bar")
     38 
     39     button = Button(root, text="Update status", command=change)
     40     button.pack(side=BOTTOM)
     41     frame.pack()
     42     frame.mainloop()
     43     root.mainloop()
     44 
     45 if __name__ == '__main__':
     46     from idlelib.idle_test.htest import run
     47     run(_multistatus_bar)
     48