【发布时间】:2016-04-09 13:22:05
【问题描述】:
我想为 Kivy 的TextInput 实现换行功能。我在我的包装函数中创建了一个Label 并检查它的纹理大小以查看该行是否需要包装。但无论文本如何,texture_size 属性都会返回 [0,0]。所以我整理了一些测试代码来调查:
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
class Test(App):
def build(self):
def f(a):
print(l.texture_size)
l = Label(text="Random text")
t = Button(on_press = f)
print(l.texture_size)
return t
Test().run()
texture_size 从build 方法打印时返回[0,0],但按钮打印正确的值。在我的情况下,按钮不是一个选项,我想创建一个Label,获取它的纹理大小并几乎删除它。也许有更好的方法来确定特定字体的像素文本大小?或者,如果不是,为什么它不在build 方法中打印正确的值?
【问题讨论】:
-
有一个用于将文本实际渲染到纹理的内部类。我会发现(可能是 kivy.core.text.something)并用它来渲染然后检查纹理大小。如果没有立即创建纹理,您可能会遇到时间问题。
标签: python python-3.x kivy