Я хочу использовать 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()
Лучше всего выполнять обработку событий и графику в основном потоке. Некоторым окружениям очень не нравится, когда вы пытаетесь выполнить рендеринг из других потоков, а некоторым не нравится, когда вы пытаетесь очистить очередь событий из них.
Возможно, даже не удастся сделать то, на что вы рассчитываете, поскольку процесс, в котором вы работаете, может иметь свои собственные представления о том, кому принадлежит очередь сообщений и окно, в которое вы делаете рендеринг.