import tkinter as tk from tkinter import ttk from .base import View class CircleView(View): def _init_canvas(self): self.target_r = self.center[0] - 10 self.draw_circle(self.center[0], self.center[1], self.target_r, outline="#000000") self.target_frame = tk.Frame(self.actions) self.target_frame.pack() self.target_label = ttk.Label(self.target_frame, text="Target (g)") self.target_label.pack(side=tk.LEFT) self.target = ttk.Entry(self.target_frame) self.target.insert(0, 100.0) self.target.pack(side=tk.LEFT) def draw_circle(self, x, y, r, **kwargs): self.canvas.create_oval(x-r, y-r, x+r, y+r, **kwargs) def update_weight(self, weight): self.canvas.delete("all") weight_r = 0.0 try: target = float(self.target.get()) weight_r = weight / target * self.target_r self.draw_circle(self.center[0], self.center[1], weight_r, fill="#000000") except: pass finally: target_outline = "#000000" if weight_r > self.target_r: target_outline = "#FFFFFF" self.draw_circle(self.center[0], self.center[1], self.target_r, outline=target_outline)