| 
									
										
										
										
											2020-10-24 16:32:34 -07:00
										 |  |  | from tkinter.ttk import Label, Frame | 
					
						
							| 
									
										
										
										
											2000-08-15 01:13:23 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-31 00:50:55 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-08-15 01:13:23 +00:00
										 |  |  | class MultiStatusBar(Frame): | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-21 18:41:38 -04:00
										 |  |  |     def __init__(self, master, **kw): | 
					
						
							| 
									
										
										
										
											2003-07-09 18:48:24 +00:00
										 |  |  |         Frame.__init__(self, master, **kw) | 
					
						
							| 
									
										
										
										
											2001-07-13 17:52:08 +00:00
										 |  |  |         self.labels = {} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-21 18:41:38 -04: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: | 
					
						
							| 
									
										
										
										
											2016-06-21 18:41:38 -04:00
										 |  |  |             label = Label(self, borderwidth=0, anchor='w') | 
					
						
							| 
									
										
										
										
											2015-11-16 07:32:26 -05:00
										 |  |  |             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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-31 00:50:55 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-10 17:28:10 -04:00
										 |  |  | def _multistatus_bar(parent):  # htest # | 
					
						
							| 
									
										
										
										
											2020-10-22 15:14:35 -04:00
										 |  |  |     from tkinter import Toplevel, Text | 
					
						
							|  |  |  |     from tkinter.ttk import Frame, Button | 
					
						
							| 
									
										
										
										
											2016-06-21 18:41:38 -04:00
										 |  |  |     top = Toplevel(parent) | 
					
						
							| 
									
										
										
										
											2016-07-10 17:28:10 -04:00
										 |  |  |     x, y = map(int, parent.geometry().split('+')[1:]) | 
					
						
							|  |  |  |     top.geometry("+%d+%d" %(x, y + 175)) | 
					
						
							| 
									
										
										
										
											2016-06-21 18:41:38 -04:00
										 |  |  |     top.title("Test multistatus bar") | 
					
						
							| 
									
										
										
										
											2023-12-03 04:28:37 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-21 18:41:38 -04:00
										 |  |  |     frame = Frame(top) | 
					
						
							| 
									
										
										
										
											2016-07-10 17:28:10 -04:00
										 |  |  |     text = Text(frame, height=5, width=40) | 
					
						
							| 
									
										
										
										
											2014-05-24 18:48:18 -04:00
										 |  |  |     text.pack() | 
					
						
							|  |  |  |     msb = MultiStatusBar(frame) | 
					
						
							|  |  |  |     msb.set_label("one", "hello") | 
					
						
							|  |  |  |     msb.set_label("two", "world") | 
					
						
							| 
									
										
										
										
											2016-06-21 18:41:38 -04:00
										 |  |  |     msb.pack(side='bottom', fill='x') | 
					
						
							| 
									
										
										
										
											2014-05-24 18:48:18 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def change(): | 
					
						
							|  |  |  |         msb.set_label("one", "foo") | 
					
						
							|  |  |  |         msb.set_label("two", "bar") | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-21 18:41:38 -04:00
										 |  |  |     button = Button(top, text="Update status", command=change) | 
					
						
							|  |  |  |     button.pack(side='bottom') | 
					
						
							| 
									
										
										
										
											2014-05-24 18:48:18 -04:00
										 |  |  |     frame.pack() | 
					
						
							| 
									
										
										
										
											2000-08-15 01:13:23 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-04 01:36:40 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-08-15 01:13:23 +00:00
										 |  |  | if __name__ == '__main__': | 
					
						
							| 
									
										
										
										
											2018-06-19 19:12:52 -04:00
										 |  |  |     from unittest import main | 
					
						
							|  |  |  |     main('idlelib.idle_test.test_statusbar', verbosity=2, exit=False) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-24 18:48:18 -04:00
										 |  |  |     from idlelib.idle_test.htest import run | 
					
						
							|  |  |  |     run(_multistatus_bar) |