-1

フレームの背景として画像を作成しようとしましたが、コードは次のとおりです。

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

画像はトップ フレームのプレース ホルダーのようですが、画像が表示されません。問題を解決する方法を考えています。

背景画像が表示されない

4

1 に答える 1

1

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)       
于 2016-03-23T16:04:22.820 に答える