mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-30 20:40:28 -04:00 
			
		
		
		
	
		
			
	
	
		
			74 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			74 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | """
 | ||
|  | A  basic widget for showing the progress | ||
|  | being made in a task. | ||
|  | 
 | ||
|  | """
 | ||
|  | 
 | ||
|  | from Tkinter import * | ||
|  | 
 | ||
|  | class Smeter: | ||
|  |     def __init__(self, master=None, orientation="horizontal", | ||
|  |                  min=0, max=100, width=100, height=18, | ||
|  |                  doLabel=1, appearance="sunken", | ||
|  | 		 fillColor="blue", background="gray", | ||
|  |                  labelColor="yellow", labelFont="Verdana", | ||
|  |                  labelText="", labelFormat="%d%%", | ||
|  |                  value=50, bd=2): | ||
|  | 	# preserve various values | ||
|  | 	self.master=master | ||
|  | 	self.orientation=orientation | ||
|  | 	self.min=min | ||
|  | 	self.max=max | ||
|  | 	self.width=width | ||
|  | 	self.height=height | ||
|  | 	self.doLabel=doLabel | ||
|  | 	self.fillColor=fillColor | ||
|  |         self.labelFont= labelFont | ||
|  | 	self.labelColor=labelColor | ||
|  | 	self.background=background | ||
|  | 	self.labelText=labelText | ||
|  | 	self.labelFormat=labelFormat | ||
|  | 	self.value=value | ||
|  | 	self.frame=Frame(master, relief=appearance, bd=bd) | ||
|  | 	self.canvas=Canvas(self.frame, height=height, width=width, bd=0, | ||
|  |                            highlightthickness=0, background=background) | ||
|  | 	self.scale=self.canvas.create_rectangle(0, 0, width, height, | ||
|  | 						fill=fillColor) | ||
|  | 	self.label=self.canvas.create_text(self.canvas.winfo_reqwidth() / 2, | ||
|  | 					   height / 2, text=labelText, | ||
|  | 					   anchor="c", fill=labelColor, | ||
|  | 					   font=self.labelFont) | ||
|  | 	self.update() | ||
|  | 	self.canvas.pack(side='top', fill='x', expand='no') | ||
|  | 
 | ||
|  |     def updateProgress(self, newValue, newMax=None): | ||
|  |         if newMax: | ||
|  |             self.max = newMax | ||
|  |         self.value = newValue | ||
|  |         self.update() | ||
|  | 
 | ||
|  |     def update(self): | ||
|  | 	# Trim the values to be between min and max | ||
|  | 	value=self.value | ||
|  | 	if value > self.max: | ||
|  | 	    value = self.max | ||
|  | 	if value < self.min: | ||
|  | 	    value = self.min | ||
|  | 	# Adjust the rectangle | ||
|  | 	if self.orientation == "horizontal": | ||
|  | 	    self.canvas.coords(self.scale, 0, 0, | ||
|  | 		     float(value) / self.max * self.width, self.height) | ||
|  | 	else: | ||
|  | 	    self.canvas.coords(self.scale, 0, | ||
|  |                      self.height - (float(value) / self.max*self.height), | ||
|  | 		     self.width, self.height) | ||
|  | 	# Now update the colors | ||
|  | 	self.canvas.itemconfig(self.scale, fill=self.fillColor) | ||
|  | 	self.canvas.itemconfig(self.label, fill=self.labelColor) | ||
|  | 	# And update the label | ||
|  | 	if self.doLabel: | ||
|  |             dB=int((value-50.0)/2.5) | ||
|  |             t='%d dB'%dB | ||
|  |             self.canvas.itemconfig(self.label, text=t) | ||
|  | 	self.canvas.update_idletasks() |