Найти - Пользователи
Полная версия: Помогите с картинкой
Начало » GUI » Помогите с картинкой
1
Brain
Всем привет

Есть код:

 from tkinter import *
class Pushka:
    def __init__(self):
        img = PhotoImage(file='pushka.gif')
        self.id = win.create_image(10, 10, image=img, anchor='nw')
tk = Tk()
win = Canvas(tk, width = 800, height = 600)
win.pack()
pushka = Pushka()
tk.update()
tk.mainloop()

Почему не отображается картинка на канвасе?

И в то же время тот же код без класса, в нем картинка отображается:

 from tkinter import *
tk = Tk()
win = Canvas(tk, width = 800, height = 600)
win.pack()
img = PhotoImage(file='pushka.gif')
id = win.create_image(10, 10, image=img, anchor='nw')
tk.update()
tk.mainloop()

Не могу понять, почему когда используется класс, картинка не появляется на канвасе. Что я не так делаю?
rami
Нужна дополнительная ссылка на объект изображения:
 from tkinter import *
class Pushka:
    def __init__(self):
        img = PhotoImage(file='pushka.gif')
        self.id = win.create_image(10, 10, image=img, anchor='nw')
        win.image=img   #нужна дополнительная ссылка на объект изображения
tk = Tk()
win = Canvas(tk, width = 800, height = 600)
win.pack()
pushka = Pushka()
tk.update()
tk.mainloop()
Brain
rami
Нужна дополнительная ссылка на объект изображения:

чето как-то не впечатляет такой подход. А если картинок будет 5? И это спрайтом будет для игры, он там будет не один.
PEHDOM
Brain
чето как-то не впечатляет такой подход. А если картинок будет 5?
это не подход, вам просто обьяснили почему картинка не отображается, а уж как вы это реализуете в своей игре это уже зависит исключительно от вас и архитектуры вашей игры. будете ли вы создавать отдельные переменные или это будет список, или словарь.
rami
Brain
чето как-то не впечатляет такой подход.
А вот такой точно впечатлит исправьте переменную img на self.img:
 from tkinter import *
class Pushka:
    def __init__(self):
        self.img = PhotoImage(file='pushka.gif')
        self.id = win.create_image(10, 10, image=self.img, anchor='nw')
tk = Tk()
win = Canvas(tk, width = 800, height = 600)
win.pack()
pushka = Pushka()
tk.update()
tk.mainloop()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB