得到变量问题

时间:2013-04-19 18:39:27

标签: python python-3.x pygame

代码:

import pygame, sys

x = 640
y = 480
screen = pygame.display.set_mode([x,y], pygame.RESIZABLE | pygame.OPENGL)

while True:
    x, y = pygame.Surface.get_size()
    for event in pygame.event.get():
        if event.type == pygame.QUIT or event.type == pygame.K_ESCAPE:
            pygame.quit()
            sys.exit()

错误

Traceback (most recent call last):
  File "C:/Users/Mendel/My programs/game Project/test.py", line 8, in <module>
    x, y = pygame.Surface.get_size()
TypeError: descriptor 'get_size' of 'pygame.Surface' object needs an argument

当我查阅文档时,它说我应该没有错误

3 个答案:

答案 0 :(得分:2)

您需要使用screen对象:

x, y = screen.get_size()

根据文档,它返回一个Surface对象

pygame.display.set_mode()
Initialize a window or screen for display
set_mode(resolution=(0,0), flags=0, depth=0) -> Surface

答案 1 :(得分:1)

您不能在类上调用常规实例方法,您必须在该类的实例上调用它。*

那么,你如何获得一个类的实例?好吧,一般来说,您可以通过执行类似my_instance = MyClass(my_params)的操作来构造实例,或者调用一些辅助函数来为您执行此操作。

对于与pygame相关的细节......您确实需要完成pygame教程。表面可以是从屏幕或窗口的主“绘图画布”到您加载的图像的任何内容。目前还不清楚你在这里尝试使用什么表面,所以我不能告诉你如何获得它。

您可能希望从A Newbie Guide to pygame开始,然后转到official tutorials


*这不是真的。您可以调用类而不是实例上的方法,但是您必须显式地传递一个实例作为第一个(self)参数,并且您很少想要这样做。无论如何,这就是为什么你会得到一个误导性的错误消息,说它“需要一个参数”。

答案 2 :(得分:-1)

你的语法错了;你在Surface上调用get_size,而不是变量。你的代码应该是这样的:

variable = pygame.Surface(variable.get_size())

所以你可以在屏幕变量上调用它。我格式化的方式是你的变量是pygame变量而不是Surface(就像你的屏幕变量一样)。要根据变量查看代码格式的不同,请查看pygame's examples