calculator_mini.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. # Пишим калькулятор на PyGame с использованием GUI виджетов
  2. import pygame #Импорт PyGame
  3. import GUI #Наш модуль с GUI
  4. import sys
  5. pygame.init()
  6. screen = pygame.display.set_mode((192, 300))
  7. pygame.display.set_caption('калькулятор')
  8. clock = pygame.time.Clock()
  9. #Кнопки, и другие виджеты
  10. i = [] # Создаем массив, чтоб легче было хранить виджеты
  11. i.append(GUI.Button(screen, '0', width = 32, height = 32, y = 268, x = 32)) # Создаём кнопку
  12. i.append(GUI.Button(screen, '1', width = 32, height = 32, y = 236, x = 0)) #Ещё кнопка :)
  13. i.append(GUI.Button(screen, '2', width = 32, height = 32, y = 236, x = 32))
  14. i.append(GUI.Button(screen, '3', width = 32, height = 32, y = 236, x = 64))
  15. i.append(GUI.Button(screen, '4', width = 32, height = 32, y = 204, x = 0))
  16. i.append(GUI.Button(screen, '5', width = 32, height = 32, y = 204, x = 32))
  17. i.append(GUI.Button(screen, '6', width = 32, height = 32, y = 204, x = 64))
  18. i.append(GUI.Button(screen, '7', width = 32, height = 32, y = 172, x = 0))
  19. i.append(GUI.Button(screen, '8', width = 32, height = 32, y = 172, x = 32))
  20. i.append(GUI.Button(screen, '9', width = 32, height = 32, y = 172, x = 64))
  21. i.append(GUI.Button(screen, '.', width = 32, height = 32, y = 268, x = 64))
  22. i.append(GUI.Button(screen, '=', width = 64, height = 64, y = 236, x = 128, hover_color = (100, 255, 100)))
  23. i.append(GUI.Button(screen, 'C', width = 32, height = 32, y = 268, x = 0, hover_color = (255, 100, 100)))
  24. i.append(GUI.Button(screen, '/', width = 32, height = 32, y = 268, x = 96, hover_color = (255, 255, 100)))
  25. i.append(GUI.Button(screen, '*', width = 32, height = 32, y = 236, x = 96, hover_color = (255, 255, 100)))
  26. i.append(GUI.Button(screen, '-', width = 32, height = 32, y = 204, x = 96, hover_color = (255, 255, 100)))
  27. i.append(GUI.Button(screen, '+', width = 32, height = 32, y = 172, x = 96, hover_color = (255, 255, 100)))
  28. i.append(GUI.Label(screen, '', y = 16, x = 16)) #17
  29. while True: #Основной цикл
  30. clock.tick()
  31. screen.fill((60, 60, 60)) # Заполняем экран цветом (60, 60, 60) по RGB
  32. for value in range(len(i)): # Перебираем все виджеты
  33. i[value].update() # Обновляем виджет
  34. for event in pygame.event.get(): # Все события
  35. if event.type == pygame.QUIT: # Если был клик по крестику
  36. sys.exit() #Выход из программы
  37. elif event.type == pygame.MOUSEBUTTONDOWN: # События мышки
  38. for value in range(10):
  39. if i[value].active(key = event.button):
  40. i[17].add_text(str(value))
  41. if i[10].active(key = event.button):
  42. i[17].add_text('.')
  43. elif i[11].active(key = event.button):
  44. try:
  45. i[17].set_text(str(eval(i[17].get_text())))
  46. except:
  47. i[17].set_text('Ошибка!')
  48. elif i[12].active(key = event.button): #Проверяем виджеты на клик
  49. i[17].set_text('') #Если был клик, выполняем условие, согласно правилам калькулятора
  50. elif i[13].active(key = event.button):
  51. i[17].add_text('/')
  52. elif i[14].active(key = event.button):
  53. i[17].add_text('*')
  54. elif i[15].active(key = event.button):
  55. i[17].add_text('-')
  56. elif i[16].active(key = event.button):
  57. i[17].add_text('+')
  58. pygame.display.update() # Обновляем экран