【发布时间】:2017-09-25 18:09:11
【问题描述】:
所以我正在使用 Kivy GUI 编写程序,我真的不想使用 .kv 文件,而是将其全部写入 python 文件。问题是在MainScreen 类中我想添加一些标签,但我不能根据窗口大小的变化使它们的文本换行。当我尝试self.size 时,我只能得到 100x100。我已经尝试了 Kivy 教程书中的所有建议,但没有任何效果。我知道我可以使用\n 使文本多行或设置标准标签大小,但这不是一个真正的解决方案。我需要标签大小和文本来跟随整个窗口的变化和要换行的文本。
我已经简化了程序,只关注这个问题。
代码如下:
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label
from kivy.graphics import Rectangle, Color
class MainScreen(FloatLayout):
"""MAIN WINDOW CLASS"""
def __init__(self, **kwargs):
super(MainScreen, self).__init__(**kwargs)
with self.canvas.before:
Color(0.988, 0.725, 0.074, 1, mode='rgba')
self.rect = Rectangle(pos=self.pos, size=self.size)
self.bind(size=self.update_rect)
#TITLE LABEL
self.add_widget(Label(text="A very Long Sentence that needs to be wrapped.",
bold = True,
font_size="20sp",
pos_hint={'center_x': 0.5, 'center_y': .85},
size_hint=(None, None),
halign="center",
color=(0.055, 0.235, 0.541, 1)))
def update_rect(self, *args):
"""FUNCTION TO UPDATE THE RECATANGLE OF CANVAS TO FIT THE WHOLE SCREEN OF MAINSCREEN ALWAYS"""
self.rect.pos = self.pos
self.rect.size = self.size
class main(App):
"""BUILDING THE APP"""
def build(self):
return MainScreen()
if __name__ == "__main__":
main().run()
谢谢。
【问题讨论】: