【发布时间】:2021-12-31 14:49:16
【问题描述】:
非常简单的问题,我在 Stack Exchange 上找不到答案。 (只有这个误导性的线程:Python3 Tkinter: Grids Within Grids? Frames Alongside Other Frames? 遗憾地没有回答这个问题)。
我正在使用 tkinter 和 Python 来尝试使用 GUI 的程序。可惜我完全不懂网格系统。
我的印象是每个框架都包含自己的网格系统,其中 0,0 是该框架的左上角。
我创建了这段代码:
root = Tk()
main_frame = Frame(root, width='1520', height='1080', bg='#a1a1a1').grid(row=0, column=1)
side_frame = Frame(root, width='400', height='1080', bg='#757575').grid(row=0, column=0)
header_label = Label(main_frame, text='Heading', font=('Agency', 48), bg='#a1a1a1', fg='#ffffff').grid(row=0, column=0)
并希望由于主框架中的标签设置为(0,0),因此标签会出现在主框架中。然而,它没有。我觉得这有点奇怪和不安。下面是正在发生的事情的图片 - 标题标签出现在“side_frame”中。
有人可以向我解释一下网格系统是如何工作的吗?在我尝试向 main_frame 添加滚动条之前,我并没有真正遇到麻烦 - 然后我意识到 tkinter 中嵌入了一些严重的尴尬,我想正确理解它。
谢谢!
【问题讨论】:
-
tkinter 中的每个大师都有自己的网格,这是真的。但是您错过了将构造函数与几何方法分开。虽然构造函数返回对您的对象的引用,但构造函数返回与 root 相同的 None,因为 root 窗口是默认的主参数。另外here some useful tips
标签: python user-interface tkinter optimization layout