我一直在尝试本网站上关于在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()
答案 0 :(得分:1)
您没有使用“sticky”属性来强制ProdutoView
填充它所在的行和列。
class ProdutoView(tk.Frame):
def __init__(self, root, ct):
...
self.grid(row = 0, column = 0, sticky="nsew")