Я пытаюсь создать кнопку tkinter
с изображением в качестве фона внутри объекта.Не имеет смысла, почему вторая реализация не работает!
Вот 3 очень простых примера;Кто может объяснить причину, по которой вторая реализация не работает?
(Python 3.6.4 :: Anaconda, Inc.)
1.Кнопка создана глобально.
Работает как шарм ...
from tkinter import *
from PIL import Image, ImageTk
from numpy import random
w = Tk()
def cb():
print("Hello World")
image = ImageTk.PhotoImage(image=Image.fromarray(random.random((50,50))))
b = Button(w, text="text", command=cb, image=image)
b.pack()
w.mainloop()
2.Кнопка, созданная внутри объекта A
с фоновым изображением
Кнопка не работает при нажатии и не отображает изображение :(. Проблема явно есть, но я ее не понимаю ...
from tkinter import *
from PIL import Image, ImageTk
from numpy import random
w = Tk()
class A():
def __init__(self, w):
image = ImageTk.PhotoImage(image=Image.fromarray(random.random((50,50))))
b = Button(w, text="text", command=self.cb, image=image)
b.pack()
def cb(self):
print("Hello World")
a = A(w)
w.mainloop()
3. Кнопка, созданная внутри объекта A
без фонового изображения
Кнопка работает нормально, но я также хотел бы отобразить изображение
from tkinter import *
from PIL import Image, ImageTk
from numpy import random
w = Tk()
class A():
def __init__(self, w):
image = ImageTk.PhotoImage(image=Image.fromarray(random.random((50,50))))
b = Button(w, text="text", command=self.cb)#, image=image)
b.pack()
def cb(self):
print("Hello World")
a = A(w)
w.mainloop()