Библиотека pygame-menu работает для создания кнопок следующим образом: pygame-menu.readthedocs.io
- Кнопка в pygame-menu — это игровой объект с тремя состояниями: нормальное (когда мышь не находится над кнопкой), выделенное (когда мышь находится над кнопкой, но левая кнопка мыши ещё не нажата) и нажатое (когда мышь находится над кнопкой и игрок нажал на левую кнопку мыши). habr.com
- Кнопка реализуется как прямоугольник с фоновым цветом и текст, отображаемый поверх него. habr.com Также кнопка получает функцию on_click, которая вызывается при нажатии кнопки. habr.com
- Кнопка обрабатывает собственные события мыши и изменяет своё внутреннее состояние на основании этих событий. habr.com Когда кнопка находится в нажатом состоянии и получает событие MOUSEBUTTONUP, это означает, что игрок нажал на кнопку, и вызывается функция on_click(). habr.com
Библиотека pygame-menu поддерживает несколько виджетов, в том числе кнопки, с множеством вариантов настройки. pygame-menu.readthedocs.io