英文:
Tkinter Nested Frame using Classes
问题
我正在尝试构建一个带有主窗口的GUI,其中包含一个包含标头标签的嵌套框架(使用不同类创建)。
在下面的代码片段中,我期望由FrameHeader类创建的框架位于MainWindow.container框架内(在MainWindow.container属性的初始化期间,container属性被传递为父级)。
然而,当运行下面的代码时,FrameHeader框架位于容器框架之后,而不是位于容器框架内。
我对tkinter不太熟悉,有人可以帮助我理解,在不同类之间切换时我漏掉了什么吗?
英文:
I am trying to build a GUI with the main Frame having nested frame containing header label (created with different class).
In below snippet, I am expecting frame created by FrameHeader class to be inside MainWindow.container Frame (while initialization of MainWindow.container attribute, container attribute is passed as parent).
Still, when the below code is run, FrameHeader frame is at the bottom after container frame, instead of being inside the container frame.
I am new to tkinter, can someone help me out here, what am I missing while going between different classes?
from tkinter import *
class FrameHeader(Frame):
def __init__(self, parent, controller):
Frame.__init__(self, bg='red',relief=RAISED, borderwidth=2)
self.pack(fill=BOTH, side=TOP)
lblTitle = Label(self, text='Welcome to the Program!')
lblTitle.pack(fill=BOTH)
class MainWindow(Tk):
def __init__(self,*args):
Tk.__init__(self,*args)
self.geometry('400x300')
# Main Container
container=Frame(self, bg='black')
container.pack(side=TOP, expand=TRUE, fill=BOTH)
frameHeader=FrameHeader(container, self)
if __name__=='__main__':
mainWindow=MainWindow()
mainWindow.mainloop()
答案1
得分: 2
你没有将parent
传递给Frame.__init
,所以FrameHeader
的父级默认为根窗口而不是容器。
代码需要是这样的:
Frame.__init__(self, parent, bg='red', relief=RAISED, borderwidth=2)
英文:
You are neglecting to pass parent
to Frame.__init
, so the parent of FrameHeader
defaults to the root window rather than the container.
The code needs to be this:
Frame.__init__(self, parent, bg='red',relief=RAISED, borderwidth=2)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论