Python, Pygame, почему оба экрана отрисовываются одновременно? - PullRequest
0 голосов
/ 18 марта 2020

Я новый программист и изо всех сил пытаюсь выяснить проблему с моей первой программой. Эта программа является средством просмотра ввода для контроллера. На данный момент в коде есть 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, но любой совет будет полезен. Спасибо всем заранее. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...