Tkinter中字体大小与部件大小的关系

本文探讨了Tkinter中字体大小如何影响标签和按钮的尺寸,详细阐述了width和height属性与文本基本像素的关系,以及Tkinter.Font类在测量字体尺寸中的作用。通过分析得出部件宽度存在额外的边距,且受字体粗细和倾斜影响。同时,文章通过实例展示了部件属性如width, height, bd, padx, pady之间的计算关系。" 139321597,9203644,Apache Kafka:超越消息引擎的分布式流处理平台,"['apache', 'kafka', '分布式', '流处理']
摘要由CSDN通过智能技术生成

我是小鱼,今天是2022年2月10日。

之前用python在做扫雷游戏时,发现总是拿不准部件大小与字体之间的关系,为此,当时还特地写了一篇BLOG《Tkinter中的标签(Lable)与按钮(Button)的大小问题》,扫雷写完后我有时间慢慢回头再来看这个问题,发现当时的理解有很多是错误的。于是那篇文章我删除了,我准备重新再整理一下。

无论是标签还是按钮,在Tk中都被称为部件。以标签为例,在Tkinter.Lable的类中有width和height这两个属性。文档说明是说这两个值是用来设置标签的宽度与高度的,单位为像素。如果标签中放置的是图片的话,的确是这个样子,但如果标签中是文本的话,这两个值就与文本本身有关了。是文本的基本像素的倍数。文本的基本像素是与字体有关的,与部件应当无关。而字体的大小,粗细,倾斜都会影响字体的基本像素的大小。这才是导致我当时总是拿不准标签与按钮的大小的主要原因。

这里要在引入Tkinter中对字体的封装的类,Tkinter.Font——参见说明文档

tkinter.font --- Tkinter 字体封装

TK将字体封装在类当中,为了方便我们的使用。因此与字体有关的参数都可以从这个类的两个主要方法中获取出来,一个是measure, 另一个是metrics

measure方法是:返回以当前字体格式化时文本将在指定显示上占用的空间量

用法是  ziti.measure('8') 前面的字体是从封装的字体库中实例化的类,后面的8可以是任意内容,即为你想知道的这些内容在显示器上需要占多少个像素的宽度(见下面图片)

metrics有4个属性值,说明文档中有说明,这里我解释一下前面3个 'ascent', 'descent', 'linespace'

说明文档中:ascent -- 基线和最高点之间的距离; descent -- 基线和最低点之间的距离; linespace -- 所需最小垂直间距(在两个该字体的字符间,使得这两个字符在垂直方向上不重叠)

其实linespace = ascent + descent, 那么基线是什么,见下面的图片

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值