在tkinter中切换帧,而不是在每个图像中堆叠

2024-10-02 18:17:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经尝试了这个网站上所有关于在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”屏幕:

^{pr2}$

Tags: selftopdefrootframesidepacktk
1条回答
网友
1楼 · 发布于 2024-10-02 18:17:28

您没有使用“sticky”属性来强制ProdutoView填充它所在的行和列。在

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

相关问题 更多 >