2017-01-29 1 views
0
import tkinter as tk 

    LARGE_FONT=("Verdana",12) 

class myClass(tk.Tk): 
    def __init__(self): 
     tk.Tk.__init__(self) 

     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.frames = {} 

     frame = StartPage(container,self,"startPage","visit page 1","pageone") 
     frame2 = StartPage(container,self,"pageone","Go BAck","startPage") 
     self.frames["startPage"]=frame 
     self.frames["pageone"]=frame2 

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

     self.show_frame("startPage") 

    def show_frame(self,cont): 
     print(cont) 
     print(self.frames) 
     print(self.frames[cont]) 
     frame = self.frames[cont] 
     print(frame) 
     frame.tkraise() 

def qf(param): 
    print(param) 

class StartPage(tk.Frame): 
    def __init__(self,parent,controller,lableName,butonName,visitToPage): 
     tk.Frame.__init__(self,parent) 
     label = tk.Label(self,text=lableName,font=LARGE_FONT) 
     label.pack(pady=10,padx=10) 
     button1 = tk.Button(self,text =butonName,command=lambda: controller.show_frame(visitToPage)) 
     button1.pack() 



app = myClass() 

app.mainloop() 

Ich versuche, zwei Frames Startpage mit einer Klasse zu erstellen, so habe ich gegeben Argumente Startpage für Rahmen 1 „Startseite“, „Besuch Seite 1“, „PageOne“ und für frame2 ist „PageOne“,“ gehen Sie zurück“,‚Startseite‘warum rahmen nicht mit tkinter tkraise anheben?

aber durch Taste Rahmen gedrückt werden nicht Schalt obwohl Argumente korrekt sind show_frame funktionieren

Antwort

3

Es funktioniert nicht, weil Sie den PageOne Rahmen im Raster nicht gesetzt haben. Legen Sie einfach diese Zeile nach frame.grid und es funktioniert:

frame2.grid(row=0,column=0,sticky="nsew") 
Verwandte Themen