Заранее прошу прощения за свой плохой английский sh. Итак, чтобы резюмировать проблему, каждый раз, когда я вызываю get_init () в функции процесса, она возвращает None. Как будто он никогда не вызывался, но я вызвал его, просто в другой функции и вне процесса.
Я действительно не могу обойти эту проблему, и это первый раз, когда я публикую в стеке переполнение. Код не завершен, но он должен создать новый «слой» и воспроизвести на нем изображение для анимации (да, я начал использовать pygame только вчера, и да, я не слишком хорош в python, я Я знаю, что мне, вероятно, следует провести больше исследований по многопроцессорности).
Поскольку я перепробовал все, что смог найти на форумах, я решил опубликовать это. Не ища кормления с ложечки или чего-то подобного. Спасибо за внимание.
def pygame_setup():
pygame.init()
running = True
screen = pygame.display.set_mode((image0.shape[1], image0.shape[0]))
cursor = Pen((200, 0, 0), "cursor.png", screen)
return screen
class Pen: # deve eseguire la queue sta roba
def __init__(self, color, cursor_name, screen):
self.pos = (0, 0)
self.name = cursor_name
self.color = color
self.down = True
p = Process(target=self.run, args=(pickable.PickleableSurface(screen),))
p.start()
def up(self):
self.down = False
def down(self):
self.down = True
def run(self, screen):
cursor = pygame.image.load(self.name)
# image = pygame.transform.scale(cursor, (int(image0.shape[1] * 0.05), int(image0.shape[0] * 0.05)))
cursor.fill(self.color, special_flags=pygame.BLEND_MULT)
surface = pygame.Surface([image0.shape[1], image0.shape[0]], pygame.SRCALPHA)
surface.fill((180, 0, 0, 0))
screen.blit(surface, (0, 0))
prevr = surface.blit(cursor, self.pos)
while 1:
pygame.draw.rect(surface, (180, 0, 0, 100), prevr)
prevr = surface.blit(cursor, self.pos)
if self.down:
x, y = self.pos
surface.fill((180, 0, 0, 0))
pygame.draw.circle(surface, (255, 255, 255), (x + 5, y + 5), 2)
pygame.display.flip()
if __name__ == '__main__':
import pickable
screen = pygame_setup()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
print("quit")
pygame.quit()
running = False
Process Process-1: Traceback (most recent call last):
File "C:\Users\fdimo\AppData\Local\Programs\Python\Python36\lib\multiprocessing\process.py", line 258, in _bootstrap
self.run()
File "C:\Users\fdimo\AppData\Local\Programs\Python\Python36\lib\multiprocessing\process.py", line 93, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\fdimo\OneDrive\Desktop\SCRIPTCALLIGRAFIA\DEPRESSOPYGAME.py", line 64, in run
pygame.display.flip()
pygame.error: video system not initialized