Я новый программист и изо всех сил пытаюсь выяснить проблему с моей первой программой. Эта программа является средством просмотра ввода для контроллера. На данный момент в коде есть 3 основных части: экран конфигурации - метод класса (я думаю, что он называется), средство просмотра ввода - функция, main l oop - запускает программу.
Так что у меня все работает хорошо на входе зрителя. Но я хочу иметь возможность настроить каждую кнопку, нажав на нее в средстве просмотра ввода. Поэтому, чтобы сделать это, я создал класс кнопки, который отображается на экране в моей функции просмотра ввода. Если кнопки нажаты, он должен запустить мой метод конфигурации, который должен перерисовать экран снова. Тем не менее, независимо от того, что я делаю, он всегда будет рисовать оба экрана, но один намного меньше другого, и, казалось бы, случайно переключается между обоими нарисованными экранами. Кроме того, нажатие моей назначенной кнопки для установки button.config = False ничего не делает. Сейчас я бы хотел, чтобы мой inputviewer снова работал как обычно. Вот части кода, которые я считаю актуальными:
MAIN L OOP ():
while run:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.VIDEORESIZE:
win = pygame.display.set_mode((event.w, event.h), pygame.RESIZABLE)
for buttons in Button.buttons:
if buttons.config:
buttons.configuration()
else:
inputViewer()
INPUTVIEWER (часть, определяющая нажатие кнопок):
for buttons in Button.buttons:
buttons.colour = (255, 255, 255)
if buttons.isHovered(buttons.vecpos, buttons.radius):
buttons.colour = (200, 200, 200)
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
buttons.colour = (150, 150, 150)
buttons.config = True
КЛАСС КНОПКИ (до метода конфигурации):
def __init__(self, colour, x, y, radius, name="", text=""):
Button.buttons.append(self)
self.colour = colour
self.x = x
self.y = y
self.radius = radius
self.name = name
self.text = text
self.vecpos = pygame.math.Vector2(self.x, self.y)
self.config = False
def configuration(self):
win.fill((255, 255, 255))
pygame.display.update()
if keys[pygame.K_1]:
self.config = False
Как новый программист, я был в восторге c, что он работал без проблем. Но я хотел обобщить это так, чтобы пользователь мог изменить такие вещи, как то, что делает каждая кнопка на своем контроллере, цвета при нажатии и так далее c. Поэтому я сделал все кнопки, они хорошо рисуют на экране и правильно отображают вход моего контроллера. Они правильно наведены на ввод, и если он щелкнул, я проверил, что действительно, для buttons.config установлено значение true для указанной кнопки c, на которую я нажал. Я предполагаю, что это, вероятно, проблема с моим основным l oop, но любой совет будет полезен. Спасибо всем заранее. :)