pyGame в потоке

Я хочу использовать pyGame программу в качестве части другого процесса. С помощью следующего кода pyGame, кажется, не обрабатывает события; это не отвечает на 'q' ключ, и при этом это не тянет строку заголовка для окна. Если go() не выполняется как поток, он хорошо работает. Это находится под OSX; я не уверен, если это - проблема или нет.

import pygame, threading, random

def go():
  pygame.init()
  surf = pygame.display.set_mode((640,480))
  pygame.fastevent.init()

  while True:
    e = pygame.fastevent.poll()
    if e.type == pygame.KEYDOWN and e.unicode == 'q':
      return

    surf.set_at((random.randint(0,640), random.randint(0,480)), (255,255,255))
    pygame.display.flip()

t = threading.Thread(target=go)
t.start()
t.join()
5
задан Dan 3 June 2010 в 23:51
поделиться

1 ответ

Лучше всего выполнять обработку событий и графику в основном потоке. Некоторым окружениям очень не нравится, когда вы пытаетесь выполнить рендеринг из других потоков, а некоторым не нравится, когда вы пытаетесь очистить очередь событий из них.

Возможно, даже не удастся сделать то, на что вы рассчитываете, поскольку процесс, в котором вы работаете, может иметь свои собственные представления о том, кому принадлежит очередь сообщений и окно, в которое вы делаете рендеринг.

5
ответ дан 18 December 2019 в 09:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: