为了账号安全,请及时绑定邮箱和手机立即绑定

Tkinter:无法用小部件填充整个框架

Tkinter:无法用小部件填充整个框架

小唯快跑啊 2022-07-26 20:46:45
我正在尝试创建三个框架:顶部、中间和底部。我成功地将小部件添加到我的顶部和底部框架中,并按照我想要的方式定位它们。但是,我只是想在中间框架中添加两个条目小部件,它们将跨越框架/窗口的整个宽度。由于顶部和底部框架中所有小部件的代码长度,我将仅包含一段代码,说明如何配置我的窗口和框架:root = Tk()root.resizable(False, False)top_frame = Frame(root)middle_frame = Frame(root)bottom_frame = Frame(root)# I think this block is irrelavant to the question, but including it anyway just incaserows = 0while rows < 36:    top_frame.rowconfigure(rows, weight=1)    top_frame.columnconfigure(rows, weight=1)    bottom_frame.rowconfigure(rows, weight=1)    bottom_frame.columnconfigure(rows, weight=1)    rows += 1top_frame.grid(row=0, column=0)middle_frame.grid(row=1, column=0)bottom_frame.grid(row=2, column=0)这是我用于两个条目小部件的代码:entry_1 = Entry(middle_frame)entry_2 = Entry(middle_frame)entry_1.grid(row=0, column=0, sticky=E+W)entry_2.grid(row=1, column=0, sticky=E+W)但是,它们只是粘在中间框架的中心。我尝试了许多解决方案,但似乎没有任何改变这些条目小部件在框架内的外观 - 始终居中,从不改变大小。我什至尝试将它们打包并将它们的填充设置为 X。我可能忽略了一些非常简单的东西,但我无法弄清楚。
查看完整描述

1 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

问题的根源在于中间框架未配置为填充窗口的整个宽度,因此内部的小部件不会填充窗口的整个宽度。

第一步是使用sticky中间窗口上的选项:

middle_frame.grid(row=1, column=0, sticky="ew")

接下来,您还没有告诉grid如何处理根窗口中的额外空间。根据经验,任何grid用于管理其子级的小部件都应至少有一行和一列的权重大于零。

要让中间框架占据窗口的整个宽度,请给它所在的列赋予非零权重:

root.grid_columnconfigure(0, weight=1)

中间框架中也存在同样的问题:您没有指导grid如何处理额外的空间。根据经验法则,我们需要在中间框架内给第 0 列赋予权重:

middle_frame.grid_columnconfigure(0, weight=1)

这将允许中间框架中的条目小部件填充中间框架,并且我们已经配置应用程序以使中间框架填充窗口的整个宽度。


查看完整回答
反对 回复 2022-07-26
  • 1 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信