Странное поведение pygame.event.clear в цикле для цикла [дубликат]Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Странное поведение pygame.event.clear в цикле для цикла [дубликат]

Сообщение Anonymous »

Я пытался обработать входные данные для моего проекта Pygame, и я хотел очистить все события pygame.mousebuttondown из предыдущих циклов, сохраняя при этом все необработанные входные данные. Код, который работает так же, как и следующее:
В следующем коде методы Show () и Click () - это методы, которые я создал для класса кнопки

Код: Выделить всё

def run(self):
got_mouse_click = False
while True:

for event in pygame.event.get(exclude=[pygame.MOUSEBUTTONDOWN]):
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
pygame.event.clear(eventtype = pygame.MOUSEBUTTONDOWN)

self.screen.fill("aqua")

self.game_button.show(self.screen)
self.options_button.show(self.screen)
self.quit_button.show(self.screen)

if self.game_button.click():
self.save_menu.run()

elif self.options_button.click():
self.options.run()

elif self.quit_button.click():
pygame.quit()
sys.exit()

pygame.display.flip()
< /code>
Это метод click (): < /p>
def click(self, *, button_to_click=1, delete_events:bool=True): #left click is 1, middle button click is 2, right click is 3, mouse wheel up is 4, mouse wheel down is 5
x, y = pygame.mouse.get_pos()
if self.rect.collidepoint(x, y):
for event in pygame.event.get(eventtype=pygame.MOUSEBUTTONDOWN):
# puts the events back in the event list if delete_events = False
if not delete_events: pygame.event.post(event)
# checks for mouse click
if event.type == pygame.MOUSEBUTTONDOWN:
if event.button == button_to_click:
self.execute()
return True
return False
Предыдущий код имеет низкую потерю ввода, когда pygame.event.clear находится внутри цикла для цикла (например, в примере кода), но имеет высокую потерю ввода, если я выхожу из цикла For, независимо от того, поместил ли я до или после цикла:




Код: Выделить всё

for event in pygame.event.get(exclude=[pygame.MOUSEBUTTONDOWN]):
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
pygame.event.clear(eventtype = pygame.MOUSEBUTTONDOWN)
это не работает [/b]
pygame.event.clear(eventtype = pygame.MOUSEBUTTONDOWN)
for event in pygame.event.get(exclude=[pygame.MOUSEBUTTONDOWN]):
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
< /code>
и < /p>
for event in pygame.event.get(exclude=[pygame.MOUSEBUTTONDOWN]):
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
pygame.event.clear(eventtype = pygame.MOUSEBUTTONDOWN)
< /code>
.
У кого -то есть представление о том, почему это происходит? это?

Подробнее здесь: https://stackoverflow.com/questions/796 ... a-for-loop
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Странное поведение pygame.event.clear в цикле для цикла [дубликат]
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Странное поведение pygame.event.clear in for loop
    Anonymous » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Странное поведение list.clear () / list.add () в c#
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Pygame.font.render странное поведение [дубликат]
    Гость » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Гость
  • SVG рендеринг в приложении Pygame. До Pygame 2.0 Pygame не поддерживал SVG. Тогда как вы его загрузили?
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»