Tkinter:在一个框架内创建多个框架 class

Tkinter: Creating multiple frames inside a frame class

我遇到一个问题,我无法在给定的框架内创建多个不同的框架。这只是我整个应用程序的一小部分,但基本上我将不同的框架分成 classes,我根据情况称这些为 classes。

我正在寻找的是如何在这个框架内创建 2 个或更多框架 class。截至目前,尚未创建不同的框架,因此当将它们放置在网格中时,它们会重叠并相互替换。 (即 frame2.label 与 frame1.label 重叠)

class MainPage(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self,parent)

        #First frame inside the current MainPage Window Frame
        frame1 = Frame(self, bg = "red")
        frame1.grid(row = 0, column = 0, sticky = W)

        frame1.label = tk.Label(self, text="Main Page", font=SMALL_FONT)
        frame1.label.grid(row = 0, column = 0, sticky = W)

        itemScanNumber = StringVar()    
        frame1.EntryBox = ttk.Entry(self, textvariable = itemScanNumber) 
        frame1.EntryBox.grid(row = 0, column = 1, sticky = W)

        print(itemScanNumber.get())

        def printNumber():
            print("Your Number: " + itemScanNumber.get())
            return

        frame1.button = ttk.Button(self, text = "CLICK ME FOR SCAN NUMBER!", command = printNumber)
        frame1.button.grid(row = 0, column = 2, sticky = W)

        frame1.button1 = ttk.Button(self, text = "CLICK ME!", command = lambda: controller.show_frame(MasterFilePage))
        frame1.button1.grid(row = 0, column = 3, sticky = W)


        #Second frame inside the current MainPage Window Frame
        frame2 = Frame(self, bg = "blue")
        frame2.grid(row = 1, column = 0, sticky = W)

        frame2.label = tk.Label(self, text="Main Page2", font=SMALL_FONT)
        frame2.label.grid(row = 0, column = 0, sticky = W)

您已成功将两个框架放入 MainPage 框架内。问题是您也将一堆其他小部件放在那里,并且将其中一些放在与框架相同的行和列中。

要使小部件位于框架内,您需要提供框架作为父级。例如:

    frame1.label = tk.Label(frame1, ...) 
    frame1.EntryBox = ttk.Entry(frame1, ...) 
    frame1.button = ttk.Button(frame1, ...)
    frame1.button1 = ttk.Button(frame1, ...)
    frame2.label = tk.Label(frame2, ...)