fill()in pygame.display.set_mode()。fill((0,200,255))

时间:2012-04-09 14:35:29

标签: python function pygame

在pygame循环中考虑这一行:

pygame.display.set_mode().fill((0, 200, 255))

来自:http://openbookproject.net/thinkcs/python/english3e/pygame.html

予。即使是在set_mode中嵌套的填充函数,你怎么知道?我在pygame文档中搜索过,没有关于set_mode部分填充的信息。

II。 set_mode()是pygame包的显示模块的功能。如何调用嵌套在另一个函数中的函数? 我怎么能用这个函数调用print"hi"(试过但得到一个AttributeError):

def f():
    def g():
        print "hi"

1 个答案:

答案 0 :(得分:4)

pygame.display.set_mode()返回一个Surface对象。

来自documentation

  

pygame.display.set_mode初始化窗口或屏幕以供显示   pygame.display.set_mode(resolution =(0,0),flags = 0,depth = 0):return Surface

所以你在表面对象上调用方法.fill(),而不是在函数set_mode()上调用。

您可以在pygame的surface documentation中找到表面对象上可用的方法。

您不能以这种方式调用嵌套函数。 要在打印示例中获得所需结果,可以按以下方式使用类:

class F():
  def g(self):
    print "hi"

导致:

>>> F().g()
hi

这是一个简化示例,用于说明display.set_mode().fill()的工作原理:

class Surface():
    def fill(self):
        print "filling"

class Display():
    def set_mode(self):
        return Surface()


Display().set_mode().fill()

编辑:

您可以使用嵌套函数,但它与使用对象和模块的方式略有不同:

def f():
  def g():
    print "hi"
  return g

导致:

>>> outerf = f()
>>> outerf()
hi