Untitled
unknown
plain_text
a year ago
4.3 kB
3
Indexable
def on_press(self, event):
current_time = time.time()
if current_time - self.last_click_time >= self.click_cooldown:
self.is_pressed = True
self.press_animation_active = True
self.last_click_time = current_time
if not self.classifier:
print(TRANSLATIONS[self.winfo_toplevel().LANGUAGE]['camera_error'])
return
try:
print("Scan button pressed - starting classification")
# Create loading screen
loading_screen = LoadingScreen(
self.winfo_toplevel(),
message=TRANSLATIONS[self.winfo_toplevel().LANGUAGE]['scanning_object'],
dark_mode=self.winfo_toplevel().DARK_MODE,
language=self.winfo_toplevel().LANGUAGE
)
def perform_classification():
try:
# Take picture and classify in a separate thread
def classification_thread():
try:
# First take picture
image_path = self.classifier.take_picture()
if not image_path or not os.path.exists(image_path):
raise Exception("Failed to capture image")
# Then classify
result = self.classifier.classify_image(image_path)
if not result:
raise Exception("No classification result")
# Use after() to safely update UI from the main thread
self.after(0, lambda: handle_classification_complete(result))
except Exception as e:
print(f"Error during classification: {str(e)}")
self.after(0, lambda: handle_classification_error(str(e)))
def handle_classification_complete(result):
try:
loading_screen.destroy()
ClassificationResultScreen(
self.winfo_toplevel(),
result,
self.winfo_toplevel().DARK_MODE,
self.winfo_toplevel().LANGUAGE
)
except Exception as e:
print(f"Error showing result: {str(e)}")
loading_screen.destroy()
def handle_classification_error(error_message):
print(f"Classification error: {error_message}")
loading_screen.destroy()
MessageDialog(
self.winfo_toplevel(),
TRANSLATIONS[self.winfo_toplevel().LANGUAGE]['classification_error'],
self.winfo_toplevel().DARK_MODE
)
# Start classification in separate thread
thread = threading.Thread(target=classification_thread)
thread.daemon = True
thread.start()
except Exception as e:
print(f"Error setting up classification: {str(e)}")
loading_screen.destroy()
MessageDialog(
self.winfo_toplevel(),
TRANSLATIONS[self.winfo_toplevel().LANGUAGE]['classification_error'],
self.winfo_toplevel().DARK_MODE
)
# Schedule the classification to run after the animation starts
self.after(100, perform_classification)
except Exception as e:
print(f"Error setting up classification: {str(e)}")
MessageDialog(
self.winfo_toplevel(),
TRANSLATIONS[self.winfo_toplevel().LANGUAGE]['classification_error'],
self.winfo_toplevel().DARK_MODE
)
else:
print("Scan button cooldown active")Editor is loading...
Leave a Comment