2016-06-15 31 views
0

我一直在尝试所有在这个网站上关于在tkinter中切换窗口的所有例子,但我得到的是从凸起的框架堆叠在顶部的按钮,没有“隐藏“其他帧tkinter中的框架之间切换,而不是堆叠在彼此

主屏:

import tkinter as tk 
import Controller.ProdutoController as viewProduto 

class Main: 
    def __start__(self): 

     self.roottk = tk.Tk() 
     self.root = tk.Frame(self.roottk) 

     self.root.pack(side="top", fill="both", expand=True) 
     self.root.grid_rowconfigure(0, weight=1) 
     self.root.grid_columnconfigure(0, weight=1) 
     self.viewProduto = viewProduto.ProdutoController(self, self.root) 
     self.viewMain = MainView(self, self.root) 

     self.viewMain.tkraise() 
     self.viewMain.master.master.title("Tela Principal") 
     self.roottk.mainloop() 



    def toprodutos(self): 

     self.viewProduto.viewProduto.tkraise() 

    def tomain(self): 

     self.viewMain.tkraise() 


class MainView(tk.Frame): 

    def __init__(self, ct, root): 
     tk.Frame.__init__(self,root) 
     self.startUI() 
     self.ct = ct 
     self.grid(row = 0 , column = 0, sticky = "nsew") 



    def startUI(self): 

     botaoProdutos = tk.Button(self, text = "Produtos", command = self.toprodutos , padx = 5 , pady = 5) 
     botaoProdutos.pack(side = "top") 

     botaoEntrada = tk.Button(self, text="Entrada", command=self.toentrada, padx=5, pady=5) 
     botaoEntrada.pack(side="top") 

     botaoSaida = tk.Button(self, text="Saída", command=self.tosaida, padx=5, pady=5) 
     botaoSaida.pack(side="top") 

    def toprodutos(self): 
     self.ct.toprodutos() 
    def toentrada(self): 
     return 
    def tosaida(self): 
     return 

”Produtos“ 屏幕:

class ProdutoController: 

    def __init__(self, viewMain, root): 

     self.produtos = [] 
     self.viewMain = viewMain 
     self.viewProduto = ProdutoView(root, self) 


    def newproduto(self, nome, preco, quantidade): 
     return 

    def listprodutos(self): 
     return 

class ProdutoView(tk.Frame): 
    def __init__(self, root, ct): 
     tk.Frame.__init__(self, root) 
     self.createWidgets() 
     self.ct = ct 
     self.grid(row = 0, column = 0) 


    def createWidgets(self): 

     self.list = tk.Button(self) 
     self.list["text"] = "List" 
     self.list["command"] = self.listProdutos 
     self.list.pack(side="top") 

    def listProdutos(self): 
     self.ct.listprodutos() 

回答

1

您没有使用 ”粘性“ 属性给力ProdutoView来填充它所在的行和列。

class ProdutoView(tk.Frame): 
    def __init__(self, root, ct): 
     ... 
     self.grid(row = 0, column = 0, sticky="nsew") 
+0

哦,我认为那没什么,我该如何使Tk()帧变大? – Mojimi