Я не могу открыть изображение, используя холст и create_image на tkinter - PullRequest
0 голосов
/ 31 марта 2019

Я делаю игру для игрового джема repl.it.Я пытаюсь поместить изображение на холст, созданный не в том классе, в котором оно создается.На холсте успешно отображается текст и кнопка с нужным мне изображением, но create_image не работает.

Это может быть проблема с разрешением, но я не могу проверить это сейчас, изображение 1920x 1080 и то же самое.

Я уже попробовал create_image.

Полная программа (включая изображения)

class game(Application):
    """Where game elements are to be held"""

    def __init__(self, players, location, sWidth, sHeight, canvas):
        """Initiate variables & start game"""

        #Initiate variables
        self.players = players
        self.location = location
        self.screenWidth = sWidth
        self.screenHeight = sHeight
        self.Canvas1 = canvas

        self.LOCATIONS = Application.LOCATIONS
        self.font = Application.font

        #Gathering Images
        self.map1BG = PhotoImage(file = "polasib.gif")

        #Debugging
        print("Loading Map", self.location\
        , "\nPlayers:", self.players)

        self.createLevel(self.location)

    def createUI(self, players):
        """Creates the UI that all levels will have"""
        self.Canvas1.create_text(self.screenWidth/2, self.screenHeight/16, fill = "white", \
        font = (self.font, self.screenWidth//34), text = self.LOCATIONS[self.location - 1])

    def createLevel(self, location):
        """Creates the elements of the level"""


        if self.location == 1:
            #Polasi b
            print("Creating Polasi b Level")
            self.createUI(self.players) 

            self.Canvas1.create_image(self.screenWidth/2, self.screenHeight/2, image = self.map1BG, \
            anchor = NW)

Ожидание: я ожидаю, что изображение загрузится (и что это потребует некоторой перестройки)

Результат: изображение не появляется, но все остальное добавленное (как тест) работает.

1 Ответ

1 голос
/ 01 апреля 2019

Поскольку вы не сохранили ссылку на экземпляр game, она будет уничтожена после выхода из Application.gameScreen(). Поэтому ссылка image из create_image будет потеряна, и изображение не будет отображаться. Попробуйте назначить экземпляр game переменной экземпляра Application, как показано ниже:

self.running_game = game(self.players, self.mapChosen, self.screenWidth, self.screenHeight, self.Canvas1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...