2016-03-23 2 views
-1

Я попытался сделать изображение в качестве фона в кадре, код выглядит следующим образом,фон Tkinter PhotoImage изображение не показывая

from tkinter import * 

class LoginFrame(Frame): 
    def __init__(self, parent): 
     #Frame.__init__(self, parent) 
     super(LoginFrame, self).__init__() 

     self.parent = parent   
     self.initUI() 

    # initialize the login screen UI 
    def initUI(self): 
     # create a background image 
     photo_bg = PhotoImage(file="building.gif")   
     building = self.make_label(self.parent, image=photo_bg)  


    def make_label(self, parent, caption=NONE, side=TOP, **options): 
     label = Label(parent, text=caption, **options) 

     if side is not TOP: 
      label.pack(side=side) 
     else: 
      label.pack() 

     return label 


def main(): 
    top = Tk()  
    app = LoginFrame(top) 
    top.mainloop() 


if __name__ == '__main__': 
    main() 

Изображение, кажется, принимает держатель место на верхней раме, но нет изображения показано, мне интересно, как решить проблему.

no background image showing

+2

вам нужно сохранить ссылку на 'PhotoImage' или он будет мусора –

ответ

1

, если вы посмотрите на the Tkinter docs:

Tk не будет держать ссылку на изображение. Когда последняя ссылка Python на объект изображения удаляется, данные изображения также удаляются, а Tk будет отображать пустое поле везде, где было использовано изображение.

так что вам просто нужно сохранить ссылку на PhotoImage для кода для работы:

def initUI(self): 
    # create a background image 
    self.photo_bg = PhotoImage(file="building.gif")    
    building = self.make_label(self.parent, image=self.photo_bg)  
Смежные вопросы