Изображение Tkinter не будет отображаться [дублировать]

Все объекты гарантированно имеют метод .equals(), поскольку Object содержит метод, .equals(), который возвращает логическое значение. Задача подкласса переопределять этот метод, если требуется дополнительное определение определения. Без него (т. Е. С помощью ==) только адреса памяти проверяются между двумя объектами для равенства. String переопределяет этот метод .equals() и вместо использования адреса памяти возвращает сравнение строк на уровне символа для равенства.

Ключевое замечание состоит в том, что строки хранятся в одном пуле, поэтому после создания строки он всегда хранится в программе по тому же адресу. Строки не меняются, они неизменяемы. Вот почему это плохая идея использовать регулярную конкатенацию строк, если у вас есть серьезное количество обработки строк. Вместо этого вы будете использовать предоставленные классы StringBuilder. Помните, что указатели на эту строку могут измениться, и если вам было интересно увидеть, были ли два указателя одинаковыми ==, это был бы прекрасный способ. Строки сами не делают.

23
задан Bryan Oakley 17 November 2017 в 23:23
поделиться

1 ответ

Переменная photo является локальной переменной, которая получает мусор, собранный после создания экземпляра класса. Сохраните ссылку на фотографию, например:

self.photo = tkinter.PhotoImage(...)

Если вы выполняете поиск Google на «изображении tkinter не отображается», первым результатом будет следующее:

http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm

35
ответ дан Bryan Oakley 16 August 2018 в 02:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: