Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 27, 2018 15:07:17

Brain
Зарегистрирован: 2016-05-22
Сообщения: 49
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с картинкой

Всем привет

Есть код:

 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()

Не могу понять, почему когда используется класс, картинка не появляется на канвасе. Что я не так делаю?

Офлайн

#2 Янв. 27, 2018 17:53:53

rami
Зарегистрирован: 2018-01-08
Сообщения: 280
Репутация: +  71  -
Профиль   Отправить e-mail  

Помогите с картинкой

Нужна дополнительная ссылка на объект изображения:

 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()

Онлайн

#3 Янв. 27, 2018 21:27:33

Brain
Зарегистрирован: 2016-05-22
Сообщения: 49
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите с картинкой

rami
Нужна дополнительная ссылка на объект изображения:

чето как-то не впечатляет такой подход. А если картинок будет 5? И это спрайтом будет для игры, он там будет не один.

Отредактировано Brain (Янв. 27, 2018 21:30:31)

Офлайн

#4 Янв. 31, 2018 11:58:27

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Помогите с картинкой

Brain
чето как-то не впечатляет такой подход. А если картинок будет 5?
это не подход, вам просто обьяснили почему картинка не отображается, а уж как вы это реализуете в своей игре это уже зависит исключительно от вас и архитектуры вашей игры. будете ли вы создавать отдельные переменные или это будет список, или словарь.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#5 Фев. 8, 2018 15:32:01

rami
Зарегистрирован: 2018-01-08
Сообщения: 280
Репутация: +  71  -
Профиль   Отправить e-mail  

Помогите с картинкой

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()

Онлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version