简体   繁体   English

如何在 Tkinter 中正确构建框架

[英]How to correctly structure frames in Tkinter

I'm creating a simple chat app and I'm having a problem with packing Frames into the main window.我正在创建一个简单的聊天应用程序,但在将 Frames 打包到主窗口时遇到了问题。 Here is the part of my code:这是我的代码的一部分:

class MainApplication(Frame):
    def __init__(self, parent, *args, **kwargs):
        Frame.__init__(self, parent, *args, **kwargs)

        self.server_frame = ServerFrame(self)
        self.server_frame.pack(side="left")
    
        self.client_frame = ClientFrame(self)
        self.client_frame.pack(side="left")

        self.chat_frame = ChatFrame(self)
        self.chat_frame.pack(side="right")

        self.additional_frame = AdditionalFrame(self)
        self.additional_frame.pack(side="bottom", fill="x")

How can I get it to GUI looks like this:我怎样才能得到它的 GUI 看起来像这样:

想要的 GUI 结构

pack() is best when all of the widgets need to be in a single row or column.当所有小部件都需要在一行或一列中时, pack()是最好的。 For this I'd recommend grid() :为此,我建议使用grid()

class MainApplication(Frame):
    def __init__(self, parent, *args, **kwargs):
        Frame.__init__(self, parent, *args, **kwargs)

        self.server_frame = ServerFrame(self)
        self.server_frame.grid(row=0, column=0)
    
        self.client_frame = ClientFrame(self)
        self.client_frame.grid(row=1, column=0)

        self.chat_frame = ChatFrame(self)
        self.chat_frame.grid(row=0, column=1, rowspan=2)

        self.additional_frame = AdditionalFrame(self)
        self.additional_frame.grid(row=2, column=0, columnspan=2, sticky='ew')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM