mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 13:10:19 -04:00 
			
		
		
		
	git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/WSJT/trunk@1 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
		
			
				
	
	
		
			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()
 |