Не работает фото на кнопке в tkinter?
Вот код:
from tkinter import *
from tkinter import ttk
import webbrowser
tab2 =Tk()
def site(url):
webbrowser.open(url)
def dnevn():
def run():
site('https:/dnevnik.ru')
photo = PhotoImage(file = "EerETRKXYAMRF4Y.png")
photo = photo.subsample(2,2)
Button(dnevnik, image = photo).pack(side = TOP)
tabs = ttk.Notebook(tab2)
tabs.add(dnevnik,text = 'Dnevnik.ru')
tabs.pack(expand=1, fill='both')
dnevn()
tab2.mainloop()
Ответы (1 шт):
Автор решения: FotonPC
→ Ссылка
Здесь у вас не отображается фото, потому что не храниться на него ссылка, потому что вы объявляете перемеyную photo, которая локальная в функции, и после выхода из функции питон собирает объект изображения в мусор и удаляет.
from tkinter import *
from tkinter import ttk
import webbrowser
tab2 =Tk()
photo_cache = []
def dnevn():
photo = PhotoImage(file = "EerETRKXYAMRF4Y.png")
photo = photo.subsample(2,2)
photo_cache.append(photo)
Button(dnevnik,
image = photo_cache[-1],
command=lambda: webbrowser.open('https://dnevnik.ru')
).pack(side = TOP)
tabs = ttk.Notebook(tab2)
dnevnik = Frame(tabs)
tabs.add(dnevnik,text = 'Dnevnik.ru')
tabs.pack(expand=1, fill='both')
dnevn()
tab2.mainloop()
Поэтому я сделал список в который кэшируются эти фотки.