Kivy实现左对齐打字效果文本失败问题求助
Kivy打字效果文本左对齐问题解决方法
你的问题出在Kivy Label的text_size属性上:默认情况下Label的文本区域是自适应内容尺寸的,即便你设置了halign="left"和valign="bottom",只要文本区域没填充整个Label的空间,对齐效果就不会显现,看起来文本就是居中的。
给你修改后的代码,添加了文本区域与Label尺寸的绑定,确保对齐属性生效:
from kivy.app import App from kivy.uix.floatlayout import FloatLayout from kivy.uix.label import Label from kivy.clock import Clock class MyLabel(Label): def __init__(self, **kwargs): super().__init__(**kwargs) self.text_to_type = self.text self.text = "" # 绑定size变化时更新text_size,适配窗口大小调整 self.bind(size=self.update_text_size) Clock.schedule_interval(self.type_text, 0.05) def update_text_size(self, *args): # 让文本区域填充整个Label的尺寸 self.text_size = self.size def type_text(self, txt): if len(self.text) < len(self.text_to_type): self.text += self.text_to_type[len(self.text)] class Example(App): def build(self): self.root = FloatLayout() self.root.add_widget(MyLabel(text=''' That's a typing text! And I'm trying to make it aligned!''', size_hint=(1.0, 1.0), halign="left", valign="bottom")) return self.root if __name__ == "__main__": Example().run()
修改说明
- 通过
self.bind(size=self.update_text_size)将Label的尺寸变化与文本区域尺寸绑定,这样窗口大小改变时文本区域也会同步调整 update_text_size方法将text_size设置为Label当前的尺寸,让文本在整个Label范围内按照halign和valign的设置对齐- 保持你原来的打字逻辑不变,仅添加对齐所需的关键属性配置
内容的提问来源于stack exchange,提问作者João Weslley
相关产品推荐
相关产品推荐

