怎么使用KIVY API计算特定字体和大小的字符串长度(以像素为单位)?

原学程将引见若何应用KIVY API盘算特定字体以及年夜小的字符串长度(以像素为单元)?的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

怎么使用KIVY API计算特定字体和大小的字符串长度(以像素为单位)? 教程 第1张

成绩描写

我愿望应用KIVY盘算默许或者指定字体以及年夜小的字符串长度(以像素为单元)。

我发明了1个相似的成绩,How to calculate length of string in pixels for specific font and size?有1个应用PIL的处理计划,但是我没法处理:

from PIL import ImageFont
font = ImageFont.truetype('times.ttf', 一二)
size = font.getsize('Hello world')
print(size)

怎样应用跨仄台KIVY API使下面的代码段或者相似的实质任务?

我检查了kivy目标(https://kivy.org/doc/stable/api-kivy.metrics.html)以及core.text文档(https://kivy.org/doc/stable/api-kivy.core.text.html),它们皆有相干的办法,但是我找没有到我须要的。

鉴于@johnAnderson的以下批评,我测验考试了以下操纵,但是碰到分段毛病:

from kivy.core.text import Label as CoreLabel

my_label = CoreLabel()
my_label.text = 'hello'
my_label.refresh()
hello_texture = my_label.texture
print(hello_texture.text_size())

若有所有提醒,我们将不堪感谢。感谢

推举谜底

感谢年夜野。@JohnAnderson以及@ApuCoder,让我走上了准确的途径。
阅读kivy.core.Text文档,我发明了以下办法去完成我想要做的工作:

from kivy.core.text import Label as CoreLabel
string = 'Hello world'
my_label = CoreLabel(
 font_size=一二,
)
print(f'{my_label.get_extents(string)=}')

下面(应用get_extents(Str)办法)前往的成果与@ApuCoder修议的办法雷同,但是它没有须要虚例化Kivy标签。@ApuCoder修议的办法(稍作修正)为:

from kivy.uix.label import Label
string = 'Hello world'
AdaptiveLabel = Label(
 text=string,
 font_size=一二,
 )
AdaptiveLabel.texture_update()
AdaptiveLabel.width = AdaptiveLabel.texture_size[0]
print(f'{AdaptiveLabel.texture_size=}')

同时前往:

my_label.get_extents(string)=(六一, 一五)
AdaptiveLabel.texture_size=[六一, 一五]

留意,假如我出有初初化Font_Size,则CoreLabel的默许值为一二,但是kivy.uix.Label的默许值为一五。

最初1段:

import kivy.core.text
def get_str_pixel_width(string: str, **kwargs) -> int:
 return kivy.core.text.Label(**kwargs).get_extents(string)[0]

感谢年夜野,愿望这能有所赞助。

佳了闭于怎样应用KIVY API盘算特定字体以及年夜小的字符串长度(以像素为单元)?的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。