Я бы просто хотел прочитать это, сказав, что я действительно искал эту проблему, но у всех, у кого, похоже, была аналогичная проблема, найдено решение, которое не работает Я работаю для меня. Я использую python 3.4.3 64 бит и pygame 1.9.2a и получаю ошибку, указанную в названии. Мой код выглядит следующим образом на данный момент:TypeError: аргумент 1 должен быть pygame.Surface, а не функция
import pygame
pygame.init()
display_width = 800
display_height = 600
black = (0,0,0)
white = (255,255,255)
red = (200,0,0)
bright_red = (255,0,0)
green = (0,200,0)
bright_green = (0,255,0)
blue = (0,0,200)
bright_blue = (0,0,255)
gameDisplay = pygame.display.set_mode((display_width,display_height))
pygame.display.set_caption('Le jeux')
clock = pygame.time.Clock()
thatonething = pygame.image.load('thatonething.png')
def thatonething(x,y):
gameDisplay.blit(thatonething,(x,y))
x = (display_width * 0.45)
y = (display_height * 0.8)
crashed = False
while not crashed:
for event in pygame.event.get():
if event.type == pygame.QUIT:
crashed = True
print(event)
gameDisplay.fill(white)
thatonething(x,y)
pygame.display.update()
clock.tick(30)
pygame.quit()
quit()
Бег это дает мне это:
Traceback (most recent call last):
File "C:/Users/Windows 8/Desktop/Scripts/New folder/Main.py", line 39, in <module>
thatonething(x,y)
File "C:/Users/Windows 8/Desktop/Scripts/New folder/Main.py", line 24, in thatonething
gameDisplay.blit(thatonething,(x,y))
TypeError: argument 1 must be pygame.Surface, not function
Заранее спасибо, и извините, если это звучит как глупый вопрос.
Редактировать: Это стало возможным благодаря Брайану. Для тех, кто с подобным вопросом, который мог бы это увидеть позже, скорректированная версия выглядит следующим образом:
import pygame
pygame.init()
display_width = 800
display_height = 600
black = (0,0,0)
white = (255,255,255)
red = (200,0,0)
bright_red = (255,0,0)
green = (0,200,0)
bright_green = (0,255,0)
blue = (0,0,200)
bright_blue = (0,0,255)
gameDisplay = pygame.display.set_mode((display_width,display_height))
pygame.display.set_caption('Le jeux')
clock = pygame.time.Clock()
thatonething = pygame.image.load('thatonething.png')
def somefunction(x,y):
gameDisplay.blit(thatonething,(x,y))
x = (display_width * 0.45)
y = (display_height * 0.8)
crashed = False
while not crashed:
for event in pygame.event.get():
if event.type == pygame.QUIT:
crashed = True
print(event) #This creates a log of the events that pygame has been handling.
gameDisplay.fill(white)
somefunction(x,y)
pygame.display.update() #Updates everything "pygame.display.flip()" updates just one thing
clock.tick(30) #This defines the refresh rate i.e. 30 in brackets gives 30 fps
pygame.quit() #Closes the game (with the next line)
quit()
Ключевым отличием является то, что «thatonething» больше не имя функции.
Я недавно начал просматривать [этот путеводитель по пигме] (https://www.youtube.com/watch?v=ZFo4mtLJEWs), и он, похоже, сработал для него (пропустите 18:48, когда он правильно его запустит) , В моей голове такой макет кажется логичным, и я не могу придумать, что бы я заменил. –
Ваша проблема в том, что вы повторно используете имя 'thatonething', рассмотрите возможность использования разных имен для функции и переменной (изображения). Это решило бы проблему. – Brian
Вы правы. Я изменил имя функции на «somefunction», и она работает правильно. Большое спасибо. –