Georg Brandl | 6634bf2 | 2008-05-20 07:13:37 +0000 | [diff] [blame] | 1 | from Tkinter import * |
David Scherer | 7aced17 | 2000-08-15 01:13:23 +0000 | [diff] [blame] | 2 | |
| 3 | class MultiStatusBar(Frame): |
David Scherer | 7aced17 | 2000-08-15 01:13:23 +0000 | [diff] [blame] | 4 | |
Kurt B. Kaiser | 8220fdd | 2001-07-13 17:52:08 +0000 | [diff] [blame] | 5 | def __init__(self, master=None, **kw): |
| 6 | if master is None: |
| 7 | master = Tk() |
Raymond Hettinger | 931237e | 2003-07-09 18:48:24 +0000 | [diff] [blame] | 8 | Frame.__init__(self, master, **kw) |
Kurt B. Kaiser | 8220fdd | 2001-07-13 17:52:08 +0000 | [diff] [blame] | 9 | self.labels = {} |
| 10 | |
| 11 | def set_label(self, name, text='', side=LEFT): |
Benjamin Peterson | 6e3dbbd | 2009-10-09 22:15:50 +0000 | [diff] [blame] | 12 | if name not in self.labels: |
Kurt B. Kaiser | 8220fdd | 2001-07-13 17:52:08 +0000 | [diff] [blame] | 13 | label = Label(self, bd=1, relief=SUNKEN, anchor=W) |
| 14 | label.pack(side=side) |
| 15 | self.labels[name] = label |
| 16 | else: |
| 17 | label = self.labels[name] |
| 18 | label.config(text=text) |
David Scherer | 7aced17 | 2000-08-15 01:13:23 +0000 | [diff] [blame] | 19 | |
Terry Jan Reedy | 62012fc | 2014-05-24 18:48:03 -0400 | [diff] [blame] | 20 | def _multistatus_bar(parent): |
| 21 | root = Tk() |
| 22 | width, height, x, y = list(map(int, re.split('[x+]', parent.geometry()))) |
| 23 | root.geometry("+%d+%d" %(x, y + 150)) |
| 24 | root.title("Test multistatus bar") |
| 25 | frame = Frame(root) |
| 26 | text = Text(frame) |
| 27 | text.pack() |
| 28 | msb = MultiStatusBar(frame) |
| 29 | msb.set_label("one", "hello") |
| 30 | msb.set_label("two", "world") |
| 31 | msb.pack(side=BOTTOM, fill=X) |
| 32 | |
| 33 | def change(): |
| 34 | msb.set_label("one", "foo") |
| 35 | msb.set_label("two", "bar") |
| 36 | |
| 37 | button = Button(root, text="Update status", command=change) |
| 38 | button.pack(side=BOTTOM) |
| 39 | frame.pack() |
| 40 | frame.mainloop() |
| 41 | root.mainloop() |
David Scherer | 7aced17 | 2000-08-15 01:13:23 +0000 | [diff] [blame] | 42 | |
| 43 | if __name__ == '__main__': |
Terry Jan Reedy | 62012fc | 2014-05-24 18:48:03 -0400 | [diff] [blame] | 44 | from idlelib.idle_test.htest import run |
| 45 | run(_multistatus_bar) |