2024-05-12 19:31:01 发布
网友
如何设置/更改ttk.分隔符Tkinter中的对象?在
ttk.Separator(self, orient='horizontal').grid(column=0, row=0, columnspan=2, sticky='ew')
看起来columnspan试图完成这项工作,但是当有多个具有相同columnspan的分隔符时,它们的长度似乎不同-知道为什么吗?在
下面是一个简单快速的“脏”测试示例:
您的问题不是分隔符太短,而是您没有告诉grid如何处理未分配的额外空间。您的列的宽度仅为所需的宽度,而分隔符的宽度仅为它所在的列的宽度。在评论中,你说“我希望他们一直到输入字段的末尾”,而这正是他们所做的。您真正想要的是所有输入字段都以相同的位置结束。在
grid
快速解决方法是确保在使用grid时,始终为至少一行和一列赋予非零权重。这告诉grid在哪里分配额外的空间。在您的例子中,您还没有这样做,所以在第三行中,entry小部件右侧有一些未使用的空间。在
这里快速而棘手的解决方案是确保列0或列1获得额外的空间。通常的选择是将它交给输入小部件。因此,您可以添加以下内容以改善情况:
thirdLayer.grid_columnconfigure(1, weight=1)
这解决了当前的问题,但您需要对每个帧以及根窗口执行相同的操作。对于包含由grid管理的子级的每个帧,需要为至少一行和一列指定权重。在
由于您似乎正在尝试创建一个由标签和条目小部件组成的网格,所以您可能需要考虑使用单个框架而不是多个框架。通过使用一个单独的帧,你不必去猜测要使用多少填充来使所有内容都对齐。在
您的问题不是分隔符太短,而是您没有告诉
grid
如何处理未分配的额外空间。您的列的宽度仅为所需的宽度,而分隔符的宽度仅为它所在的列的宽度。在评论中,你说“我希望他们一直到输入字段的末尾”,而这正是他们所做的。您真正想要的是所有输入字段都以相同的位置结束。在快速解决方法是确保在使用
grid
时,始终为至少一行和一列赋予非零权重。这告诉grid
在哪里分配额外的空间。在您的例子中,您还没有这样做,所以在第三行中,entry小部件右侧有一些未使用的空间。在这里快速而棘手的解决方案是确保列0或列1获得额外的空间。通常的选择是将它交给输入小部件。因此,您可以添加以下内容以改善情况:
这解决了当前的问题,但您需要对每个帧以及根窗口执行相同的操作。对于包含由grid管理的子级的每个帧,需要为至少一行和一列指定权重。在
由于您似乎正在尝试创建一个由标签和条目小部件组成的网格,所以您可能需要考虑使用单个框架而不是多个框架。通过使用一个单独的帧,你不必去猜测要使用多少填充来使所有内容都对齐。在
相关问题 更多 >
编程相关推荐