我遇到一个问题,我无法在给定的帧内创建多个不同的帧。这只是我整个应用程序的一小部分,但基本上我将不同的Frame分成了类,我根据情况调用这些类。
我正在寻找的是如何在此框架类中创建2个或更多帧。截至目前,不会创建不同的帧,因此当将它们放置在网格中时,它们会重叠并相互替换。 (即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)
答案 0 :(得分:0)
您已成功在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, ...)