Изображение на кнопке - PullRequest
       11

Изображение на кнопке

16 голосов
/ 28 ноября 2010

Я ожидаю одинакового вывода для обоих приведенных ниже сценариев.

Но я не получаю изображение кнопки при выполнении Сценарий 1 . Тем не менее, Сценарий 2 работает хорошо.

Сценарий 1

from Tkinter import *
  class fe:
    def __init__(self,master):
      self.b=Button(master,justify = LEFT)
      photo=PhotoImage(file="mine32.gif")
      self.b.config(image=photo,width="10",height="10")
      self.b.pack(side=LEFT)
root = Tk()
front_end=fe(root)
root.mainloop()

Сценарий 2

from Tkinter import *
root=Tk()
b=Button(root,justify = LEFT)
photo=PhotoImage(file="mine32.gif")
b.config(image=photo,width="10",height="10")
b.pack(side=LEFT)
root.mainloop()

Ответы [ 3 ]

21 голосов
/ 28 ноября 2010

Единственная ссылка на объект изображения - локальная переменная.Когда __init__ выходит, локальная переменная собирается мусором, поэтому изображение no уничтожается.Во втором примере, поскольку изображение создается на глобальном уровне, оно никогда не выходит за рамки видимости и, следовательно, никогда не подвергается сборке мусора.

Чтобы обойти это, сохраните ссылку на изображение.Например, вместо photo используйте self.photo

0 голосов
/ 08 сентября 2018
logo = PhotoImage(file = 'mine32.gif')
small_logo = logo.subsample(5, 5)
self.b.config(image = small_logo , compound = LEFT )
0 голосов
/ 12 ноября 2017

его работа

x1=Button(root)
photo=PhotoImage(file="Re.png")
x1.config(image=photo,width="40",height="40",activebackground="black"
,bg="black", bd=0,command=sil)
x1.place(relx=1,x=5, y=-5, anchor=NE)

но это бесполезно

def r():
    x1=Button(root)
    photo=PhotoImage(file="Re.png")
    x1.config(image=photo,width="40",height="40",activebackground="black",
    bg="black", bd=0,command=sil)
    x1.place(relx=1,x=5, y=-5, anchor=NE)

r()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...