Untitled
unknown
plain_text
6 months ago
2.5 kB
3
Indexable
class CircleProgress(tk.Canvas): def __init__(self, parent, size=150, bg_color="#ffffff", **kwargs): # Extract custom properties, removing them from kwargs to avoid passing to Canvas self.circle_color = kwargs.pop('circle_color', '#808080') self.ring_color = kwargs.pop('ring_color', '#2C3E50') self.name = kwargs.pop('name', '') # Store the name for display purposes super().__init__(parent, width=size, height=size, bg=bg_color, highlightthickness=0, **kwargs) self.size = size self.percentage = 0 self.target_percentage = 0 self.warning_threshold = 90 self.animation_speed = 0.05 self.is_animating = False # Calculate dimensions self.center = size // 2 self.radius = (size * 0.8) // 2 self.ring_width = size * 0.1 self._draw_initial_state() def _draw_initial_state(self): # Draw base circle with a solid gray color for the shadow self.create_oval( self.center - self.radius - 5, self.center - self.radius - 5, self.center + self.radius + 5, self.center + self.radius + 5, fill='#AAAAAA', # Light gray for shadow without alpha width=0 ) # Draw main circle self.circle = self.create_oval( self.center - self.radius, self.center - self.radius, self.center + self.radius, self.center + self.radius, fill=self.circle_color, width=0 ) # Display name text with shadow self.create_text( self.center, self.center + 1, text=self.name, fill='#666666', # Darker gray for text shadow font=('Helvetica', int(self.size * 0.12), 'bold') ) # Display name in white text self.text = self.create_text( self.center, self.center, text=self.name, fill='white', font=('Helvetica', int(self.size * 0.12), 'bold') ) # Display percentage text self.percentage_text = self.create_text( self.center, self.center + self.size * 0.2, text='0%', fill='white', font=('Helvetica', int(self.size * 0.15), 'bold') )
Editor is loading...
Leave a Comment