【问题标题】:Why configuring width of Frame shows differences from Label's?为什么配置 Frame 的宽度显示与 Label 的不同?
【发布时间】:2024-01-07 19:39:01
【问题描述】:

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

结果是这样的:

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

【问题讨论】:

    标签: python tkinter label frame


    【解决方案1】:

    简答:

    20等于20,但20米不等于20公里。

    长答案:

    您得到的结果并不像您想象的那么奇怪,因为Tkinter.Frame()widthheight 选项是以像素 为单位测量的,而Tkinter.Label() 则为:

    • width:以字符
    • 定义标签的宽度
    • height: 以lines
    • 定义标签的高度

    Reference.

    【讨论】:

      【解决方案2】:

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

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

      喜欢

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

      【讨论】: