为什么配置Frame的宽度显示与Label' s的差异?

时间:2016-06-29 06:47:40

标签: python tkinter label frame

(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()

结果是这样的:

enter image description here

我为Frame和Label设置了相同的宽度和高度,但它们显示的大小不同。更重要的是,标签甚至不是一个正方形。请为我解释一下,并告诉我如何使它们相同。

2 个答案:

答案 0 :(得分:2)

简答:

20与20相同,但20米与20公里不同。

答案很长:

您得到的结果并不像您想象的那么奇怪,因为width的{​​{1}}和height选项是以像素衡量的,而在Tkinter.Frame()

  • Tkinter.Label():以字符
  • 定义标签的宽度
  • width:在
  • 中定义标签的高度

Reference.

答案 1 :(得分:1)

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

例如: 将Label()内的宽度和高度更改为1.您将在tk窗口中看到一个用黑色填充的字符的空间。

喜欢

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