gpt4 book ai didi

python - 为什么 tkinter.grid() 方法中的 'ipady' 选项仅在小部件下方添加空间?

转载 作者:太空宇宙 更新时间:2023-11-03 21:20:53 25 4
gpt4 key购买 nike

下面是显示该问题的代码。 Label1 显示我需要使用 padyLabel1 替换 10 个像素。 Label2显示了ipady的默认效果。为什么 ipady 不在小部件的上方和下方留出空间?如何让 ipady 在不使用 pady 的情况下完成它应该做的事情?谢谢。

引用tcl documentation :

-ipady amount

The amount specifies how much vertical internal padding to leave on the top and bottom of the slave(s). This space is added inside the slave(s) border. The amount defaults to 0.

import tkinter as tk
import tkinter.ttk as ttk

root = tk.Tk()

s = ttk.Style()
s.configure('one.TFrame', background='light blue', relief='raised',borderwidth=10)
s.configure('two.TFrame', background='light green', relief='sunken', borderwidth=10)

frame1 = ttk.Frame(root,style='one.TFrame')
frame1.grid(row=0, column=0, sticky='nsew', ipady=10,)

label1 = ttk.Label(frame1, text='Label1')
label1.grid(sticky='nsew',padx=10, pady=10,)

frame2 = ttk.Frame(frame1,style='two.TFrame')
frame2.grid(row=1, column=1, sticky='nsew', ipady=50,)

label2 = ttk.Label(frame2, text='Label2')
label2.grid()

最佳答案

我不认为 ipady 完全符合您的想法。诚然,文档在这一点上有点不清楚。它不会添加相当于内部边距的内容。相反,它只是将许多像素添加到小部件的高度,并且将像素添加到边框的内部而不是外部。它不会“阻止”这些像素的使用。

如果您的框架通常为 20 像素高,则使用 ipady=50,您的小部件现在将为 120 像素高 (50*2 + 20)。添加到此框架内的任何小部件都可以使用框架内的所有空间。因此,当您使用grid将某些内容放置在第0行时,它仍然会出现在框架的最顶部,就在边框下方。

这正是我在你的代码中看到的。在我的机器上,没有 ipady=50 的第 2 帧最终高度为 20 像素。当我添加 ipady=50 时,框架变为 120 像素高。该标 checkout 现在框架的最顶部,因为它已放置在第 0 行。

TL;DR:不要认为 ipady 是在说“我需要这么多的内部边距”,而是“我需要更多的内部空间”。

关于python - 为什么 tkinter.grid() 方法中的 'ipady' 选项仅在小部件下方添加空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54264614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com