首页 > 解决方案 > Python Canvas bbox 返回无

问题描述

所以我正在制作一个游戏(Minecraft 2D(磨损版)),如果你在洞穴的地下,我希望背景是黑暗的,而不是如果你在洞穴中你可以看到太阳,所以我要做的是我想检查屏幕上最低的草块(女巫是地面),然后将洞穴背景放在那个位置,但是当我试图在画布上获取 bbox 或块对象的坐标时,它只是给了我None

所以我现在有了这个:(每次玩家移动时相机功能都会运行)

    def camera(self):
    for i in self.block_sprites:
        self.canvas.delete(i.get_image())
    for i in self.sprites:
        self.canvas.delete(i)
    self.draw_current_pos()
    self.draw_background()

def add_block_sprite(self, x, y, block_type):
    self.current_sprite = Block(x, y, self, block_type)
    self.block_sprites.append(self.current_sprite)

def draw_current_pos(self):
    self.sprites = []
    self.block_sprites = []
    for x in range(0, 20):
        for y in range(0, 21):
            if self.world.world[self.posx+x][self.posy+y] == 0 :
                continue
            else:
                self.add_block_sprite(x, y, self.world.world[self.posx + x][self.posy + y])

def draw_background(self):
    grass_y = 1000
    test_for_grass = False
    for block in self.block_sprites:
        if block.get_type() == 1:
            print(self.canvas.bbox(block))              #prints "None"
            if self.canvas.bbox(block)[1] > grass_y:    ####error here####
                grass_y = self.canvas.coords(block)[1]
                test_for_grass = True
    if not test_for_grass and self.posy < 30:
        grass_y = 1000 - grass_y
    cave = self.canvas.create_image(0, grass_y, image=self.cavebg, anchor="nw")
    self.sprites.append(cave)

你知道问题是什么吗?我希望你能帮忙!(如果这个问题的代码很少告诉我)

标签: pythontkinter

解决方案


推荐阅读