| 
									
										
										
										
											2008-05-17 18:39:55 +00:00
										 |  |  | from tkinter import * | 
					
						
							| 
									
										
										
										
											2000-08-15 01:13:23 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class MultiStatusBar(Frame): | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-13 17:52:08 +00:00
										 |  |  |     def __init__(self, master=None, **kw): | 
					
						
							|  |  |  |         if master is None: | 
					
						
							|  |  |  |             master = Tk() | 
					
						
							| 
									
										
										
										
											2003-07-09 18:48:24 +00:00
										 |  |  |         Frame.__init__(self, master, **kw) | 
					
						
							| 
									
										
										
										
											2001-07-13 17:52:08 +00:00
										 |  |  |         self.labels = {} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-16 07:32:26 -05:00
										 |  |  |     def set_label(self, name, text='', side=LEFT, width=0): | 
					
						
							| 
									
										
										
										
											2006-08-22 15:45:46 +00:00
										 |  |  |         if name not in self.labels: | 
					
						
							| 
									
										
										
										
											2015-11-16 07:32:26 -05:00
										 |  |  |             label = Label(self, borderwidth=0, anchor=W) | 
					
						
							|  |  |  |             label.pack(side=side, pady=0, padx=4) | 
					
						
							| 
									
										
										
										
											2001-07-13 17:52:08 +00:00
										 |  |  |             self.labels[name] = label | 
					
						
							|  |  |  |         else: | 
					
						
							|  |  |  |             label = self.labels[name] | 
					
						
							| 
									
										
										
										
											2015-11-16 07:36:22 -05:00
										 |  |  |         if width != 0: | 
					
						
							| 
									
										
										
										
											2015-11-16 07:32:26 -05:00
										 |  |  |             label.config(width=width) | 
					
						
							| 
									
										
										
										
											2001-07-13 17:52:08 +00:00
										 |  |  |         label.config(text=text) | 
					
						
							| 
									
										
										
										
											2000-08-15 01:13:23 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-24 18:48:18 -04:00
										 |  |  | def _multistatus_bar(parent): | 
					
						
							|  |  |  |     root = Tk() | 
					
						
							|  |  |  |     width, height, x, y = list(map(int, re.split('[x+]', parent.geometry()))) | 
					
						
							|  |  |  |     root.geometry("+%d+%d" %(x, y + 150)) | 
					
						
							|  |  |  |     root.title("Test multistatus bar") | 
					
						
							|  |  |  |     frame = Frame(root) | 
					
						
							|  |  |  |     text = Text(frame) | 
					
						
							|  |  |  |     text.pack() | 
					
						
							|  |  |  |     msb = MultiStatusBar(frame) | 
					
						
							|  |  |  |     msb.set_label("one", "hello") | 
					
						
							|  |  |  |     msb.set_label("two", "world") | 
					
						
							|  |  |  |     msb.pack(side=BOTTOM, fill=X) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def change(): | 
					
						
							|  |  |  |         msb.set_label("one", "foo") | 
					
						
							|  |  |  |         msb.set_label("two", "bar") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     button = Button(root, text="Update status", command=change) | 
					
						
							|  |  |  |     button.pack(side=BOTTOM) | 
					
						
							|  |  |  |     frame.pack() | 
					
						
							|  |  |  |     frame.mainloop() | 
					
						
							|  |  |  |     root.mainloop() | 
					
						
							| 
									
										
										
										
											2000-08-15 01:13:23 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | if __name__ == '__main__': | 
					
						
							| 
									
										
										
										
											2014-05-24 18:48:18 -04:00
										 |  |  |     from idlelib.idle_test.htest import run | 
					
						
							|  |  |  |     run(_multistatus_bar) |