From 7ec12c0ce57cca279d56db297a499f1532b27915 Mon Sep 17 00:00:00 2001 From: Junior Date: Wed, 5 Jun 2024 15:37:05 -0400 Subject: [PATCH] clean up prep for catching mouse clicks on buttons --- PyGame/Calculator/calc.py | 129 ++++++++++++++++++++++++---------------------- 1 file changed, 66 insertions(+), 63 deletions(-) diff --git a/PyGame/Calculator/calc.py b/PyGame/Calculator/calc.py index 53d749e..f62f5fd 100644 --- a/PyGame/Calculator/calc.py +++ b/PyGame/Calculator/calc.py @@ -24,6 +24,7 @@ black = (0, 0, 0) button_origin_x = 90 button_origin_y = 280 button_spacing = 140 +button_radius = 50 @dataclass class Button: @@ -113,15 +114,15 @@ def flash_button(b): center_x = button_origin_x + (b.column * button_spacing) center_y = button_origin_y + (b.row * button_spacing) center = (center_x, center_y) - pygame.draw.circle(screen, white, center, 50, 4) + pygame.draw.circle(screen, white, center, button_radius, 4) b.flashing = True b.unflash_on = time.time() + 0.1 else: center_x = button_origin_x + (b.column * button_spacing) center_y = button_origin_y + (b.row * button_spacing) center = (center_x, center_y) - pygame.draw.circle(screen, black, center, 50, 4) - pygame.draw.circle(screen, yellow, center, 50, 2) + pygame.draw.circle(screen, black, center, button_radius, 4) + pygame.draw.circle(screen, yellow, center, button_radius, 2) b.flashing = False def draw_buttons(): @@ -130,7 +131,7 @@ def draw_buttons(): b.center_x = button_origin_x + (b.column * button_spacing) b.center_y = button_origin_y + (b.row * button_spacing) center = (b.center_x, b.center_y) - pygame.draw.circle(screen, yellow, center, 50, 2) + pygame.draw.circle(screen, yellow, center, button_radius, 2) b_text = cheesy_font.render(b.label, True, white) text_x = b.center_x - (b_text.get_width() // 2) text_y = b.center_y - (b_text.get_height() // 2) @@ -156,72 +157,74 @@ draw_buttons() while True: for event in pygame.event.get(): - if event.type == pygame.QUIT or (event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE): + if event.type == pygame.QUIT: pygame.quit() sys.exit() - #elif event.type == pygame.KEYDOWN: - # print(event.key) - elif event.type == pygame.KEYDOWN and event.key == pygame.K_c: - display_num_whole = clear_display - display_num_decimal = "" - num_float = False - float_precision = 1 - flash_button(buttons[str(event.key)]) - elif event.type == pygame.KEYDOWN and event.key == pygame.K_a: - display_num_whole = clear_display - display_num_decimal = "" - num_float = False - float_precision = 1 - flash_button(buttons[str(event.key)]) - elif event.type == pygame.KEYDOWN and (event.key == pygame.K_PERIOD or event.key == pygame.K_KP_PERIOD): - actual_key = pygame.K_PERIOD - flash_button(buttons[str(actual_key)]) - num_float = True - elif event.type == pygame.KEYDOWN and event.key in valid_keys_equals and not pygame.key.get_mods() & pygame.KMOD_SHIFT: - actual_key = pygame.K_EQUALS - flash_button(buttons[str(actual_key)]) - elif event.type == pygame.KEYDOWN and event.key == pygame.K_BACKSPACE: - flash_button(buttons[str(event.key)]) - if num_float == True: - if display_num_decimal == "": - num_float = False + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_ESCAPE: + pygame.quit() + sys.exit() + elif event.key == pygame.K_c: + display_num_whole = clear_display + display_num_decimal = "" + num_float = False + float_precision = 1 + flash_button(buttons[str(event.key)]) + elif event.key == pygame.K_a: + display_num_whole = clear_display + display_num_decimal = "" + num_float = False + float_precision = 1 + flash_button(buttons[str(event.key)]) + elif event.key == pygame.K_PERIOD or event.key == pygame.K_KP_PERIOD: + actual_key = pygame.K_PERIOD + flash_button(buttons[str(actual_key)]) + num_float = True + elif event.key in valid_keys_equals and not pygame.key.get_mods() & pygame.KMOD_SHIFT: + actual_key = pygame.K_EQUALS + flash_button(buttons[str(actual_key)]) + elif event.key == pygame.K_BACKSPACE: + flash_button(buttons[str(event.key)]) + if num_float == True: + if display_num_decimal == "": + num_float = False + if len(display_num_whole) > 1: + display_num_whole = display_num_whole[:-1] + elif display_num_whole != "0": + display_num_whole = "0" + else: + display_num_decimal = display_num_decimal[:-1] + else: if len(display_num_whole) > 1: display_num_whole = display_num_whole[:-1] elif display_num_whole != "0": display_num_whole = "0" + elif (event.key == pygame.K_EQUALS and pygame.key.get_mods() & pygame.KMOD_SHIFT) or event.key == pygame.K_KP_PLUS: + actual_key = pygame.K_PLUS + flash_button(buttons[str(actual_key)]) + elif event.key == pygame.K_MINUS or event.key == pygame.K_KP_MINUS: + actual_key = pygame.K_MINUS + flash_button(buttons[str(actual_key)]) + elif (event.key == pygame.K_8 and pygame.key.get_mods() & pygame.KMOD_SHIFT) or event.key == pygame.K_KP_MULTIPLY: + actual_key = pygame.K_ASTERISK + flash_button(buttons[str(actual_key)]) + elif event.key == pygame.K_SLASH or event.key == pygame.K_KP_DIVIDE: + actual_key = pygame.K_SLASH + flash_button(buttons[str(actual_key)]) + elif event.key in valid_keys_numbers: + if str(event.key) in keypad_map.keys(): + actual_key = keypad_map[str(event.key)] else: - display_num_decimal = display_num_decimal[:-1] - else: - if len(display_num_whole) > 1: - display_num_whole = display_num_whole[:-1] - elif display_num_whole != "0": - display_num_whole = "0" - elif event.type == pygame.KEYDOWN and ((event.key == pygame.K_EQUALS and pygame.key.get_mods() & pygame.KMOD_SHIFT) or event.key == pygame.K_KP_PLUS): - actual_key = pygame.K_PLUS - flash_button(buttons[str(actual_key)]) - elif event.type == pygame.KEYDOWN and (event.key == pygame.K_MINUS or event.key == pygame.K_KP_MINUS): - actual_key = pygame.K_MINUS - flash_button(buttons[str(actual_key)]) - elif event.type == pygame.KEYDOWN and ((event.key == pygame.K_8 and pygame.key.get_mods() & pygame.KMOD_SHIFT) or event.key == pygame.K_KP_MULTIPLY): - actual_key = pygame.K_ASTERISK - flash_button(buttons[str(actual_key)]) - elif event.type == pygame.KEYDOWN and (event.key == pygame.K_SLASH or event.key == pygame.K_KP_DIVIDE): - actual_key = pygame.K_SLASH - flash_button(buttons[str(actual_key)]) - elif event.type == pygame.KEYDOWN and event.key in valid_keys_numbers: - if str(event.key) in keypad_map.keys(): - actual_key = keypad_map[str(event.key)] - else: - actual_key = event.key - flash_button(buttons[str(actual_key)]) - if len(display_num_whole) <= 10: - if num_float == False: - if display_num_whole == clear_display and actual_key != pygame.K_0: - display_num_whole = chr(actual_key) - elif display_num_whole != clear_display: - display_num_whole += chr(actual_key) - else: - display_num_decimal += chr(actual_key) + actual_key = event.key + flash_button(buttons[str(actual_key)]) + if len(display_num_whole) <= 10: + if num_float == False: + if display_num_whole == clear_display and actual_key != pygame.K_0: + display_num_whole = chr(actual_key) + elif display_num_whole != clear_display: + display_num_whole += chr(actual_key) + else: + display_num_decimal += chr(actual_key) if display_num_whole != old_display_num_whole or display_num_decimal != old_display_num_decimal: print(f"Number: {display_num_whole}", end='') if num_float == True: