Это означает, что вы пытаетесь манипулировать тем, что имеет ссылку, но еще не инициализировано. Первое, что нужно сделать, это проверить каждый созданный экземпляр. Используйте контрольные точки, часы, проверяйте свои значения varibale. Следить за трассировкой стека и искать точные строки и столбцы, которые создают проблему
Позиционирование окон не обрабатывается клиентским приложением. Он обрабатывается диспетчером Window (metacity и т. Д.).
В библиотеке SDL, на которой основан PyGame, есть несколько переменных среды , которые можно использовать, чтобы дать подсказки диспетчеру окна. Это подсказки, которые WM может игнорировать, но это лучшее, что вы можете сделать.
Примером могут служить комментарии к здесь .
import os
os.environ['SDL_VIDEO_WINDOW_POS'] = str(position[0]) + "," + str(position[1])
в соответствии с http://pygame.org/wiki/FrequentlyAskedQuestions
Вы также можете просто центрировать экран с помощью
import pygame, os
os.environ['SDL_VIDEO_CENTERED'] = '1'
Обратите внимание, что это необходимо сделать, прежде чем инициализировать pygame в основном цикле. Я делаю это сразу после импорта os, например. И поскольку они не являются частью pygame, вы, вероятно, можете использовать его в другом месте, хотя такие вещи, как gtk и wxpython, предоставляют свои собственные механизмы.