2017-03-24 5 views
1

ウィジェットを背景イメージの上に配置しようとしていますが、ウィジェットの上に背景イメージが表示されています。クラスを使用して背景イメージの上にtkinterにウィジェットを配置する方法

コード

import tkinter as tk  

class baseclass(tk.Tk): 

    def __init__(self,*args,**kwargs): 

     tk.Tk.__init__(self,*args,**kwargs) 

     container = tk.Frame(self) 
     container.pack(side="top",fill="both",expand=True) 
     container.grid_rowconfigure(0,weight=1) 
     container.grid_columnconfigure(0,weight=1) 

     self.title("REMOTE STREETLIGHT MANAGEMENT") 

     self.frames = {} 

     for F in (startpage,firstPage): 

      page_name = F.__name__ 

      frame = F(parent=container,controller=self) 

      self.frames[page_name] = frame 

      frame.grid(row=0,column=0,sticky="nsew") 

     self.show_frame("startpage") 

    def show_frame(self,page_name): 

     frame = self.frames[page_name] 
     frame.tkraise() 


class startpage(tk.Frame): 

    def __init__(self,parent,controller): 

     tk.Frame.__init__(self,parent) 

     self.controller = controller 
     c=tk.Canvas(self,bg="red", height=250,width=300) 
     img1_path=r"D:\StreetLight\sl1.gif" 
     img1=tk.PhotoImage(file=img1_path) 
     background_label = tk.Label(self, image=img1) 


     title_label=tk.Label(self,text='Welcome to the Remote Monitoring portal\n') 
     title_label.pack() 
     background_label.image=img1 
     background_label.pack() 

     #attempt to login button 
     attempt_login = tk.Button(self,text="Login", 
            command=lambda: controller.show_frame("firstPage")) 
     attempt_login.pack(pady=4) 
     c.pack() 


class firstPage(tk.Frame): 

    def __init__(self, parent, controller): 

     tk.Frame.__init__(self,parent) 

     self.controller=controller 

     title_label=tk.Label(self,text='Welcome to the Remote Monitoring portal\n') 
     title_label.pack() 

     select_area_label=tk.Label(self,text="SELECT AREA\n") 
     select_area_label.pack() 

     back = tk.Button(self,text="Sign Out", 
            command=lambda: controller.show_frame("startpage")) 
     back.pack(pady=4) 



if __name__ == "__main__": 

    app = baseclass() 
    app.mainloop() 

答えて

0

Tkinterでは背景として画像を使用するように、this question'sの回答によると、あなたはplaceの代わりpackその位置を定義する必要があります。あなたのコードでは、交換してください:

background_label.pack() 

background_label.place(x=0, y=0, relwidth=1, relheight=1) 
+0

であなたも 'relwidth = 1、relheight = 1 'DO何を知っていて、意味しますか?それ以外の違いは何ですか?そうでない場合は、別の回答で回答するよりも重複して回答する方が良いでしょう。 – abccd

関連する問題