为什么配置 Frame 的宽度显示与 Label 的不同?

Why configuring width of Frame shows differences from Label's?

(windows 7, python 2.7.3)

这是我的代码:

from Tkinter import *

root = Tk()
root.geometry('400x400')
Frame(root, width=20, height=20, bg='red').pack(expand=NO, fill=None, side=LEFT)
Label(root, width=20, height=20, bg='black').pack(expand=NO, fill=None, side=LEFT)
root.mainloop()

结果是这样的:

我为框架和标签设置了相同的宽度和高度,但它们显示的尺寸不同。更重要的是,标签甚至不是 square.Please 为我解释它,并告诉我如何使它们相同大小。

据我所知,Label 用于文本。 Label() 定义和 Frame() 对于宽度和高度参数的工作方式可能不同,如果有误,请纠正我。

示例: 将 Label() 中的宽度和高度更改为 1。您将在 tk window.

中看到一个用黑色填充的字符 space

喜欢

Label(root, width=1, height=1, bg='black').pack(expand=NO, fill=None, side=LEFT)

简答:

20和20一样,但是20米和20公里不一样

长答案:

您得到的结果并不像您想象的那么奇怪,因为 Tkinter.Frame()widthheight 选项是根据 像素 而在 Tkinter.Label():

  • width:定义标签的宽度个字符
  • height:定义标签的高度在

Reference.