如果 window 大小不够大,如何在 kivy 中使标签转到下一行

How to in kivy make labels go to the next line if the window size is not big enough

'''

import kivy
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput

class MyGrid(GridLayout):
    def __init__(self, **kwargs):# handle as many can com in **kwargs
        super(MyGrid, self).__init__(**kwargs)
        self.cols = 1
        self.add_widget(Label(text="Super long textSuper long textSuper long textSuper long textSuper long textSuper long textSuper long textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper long text"))
class MyApp(App):
    def build(self):
        return MyGrid()

if __name__ == "__main__":
    MyApp().run()

'''

上面是我的代码,当我 运行 代码时,文本不在 window 中: 那么,如果文本穿过 windows 几何图形,有什么办法可以将文本移动到下一行。

任何建议都会有所帮助谢谢。

您可以使用 text_size 属性,如下所示:

self.add_widget(Label(text_size=(500, None), text="Super long textSuper ...

另一种方法是使用 kivy 语言设置绑定,随着 window 大小的变化调整 text_size

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout

kv = '''
<MyLabel>:
    size_hint: 0.5, 0.5
    text_size: self.size
'''

class MyLabel(Label):
    pass


class MyGrid(GridLayout):
    def __init__(self, **kwargs):# handle as many can com in **kwargs
        super(MyGrid, self).__init__(**kwargs)
        self.cols = 1
        self.add_widget(MyLabel(text="Super long textSuper long textSuper long textSuper long textSuper long textSuper long textSuper long textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper textSuper long text"))


class MyApp(App):
    def build(self):
        Builder.load_string(kv)
        return MyGrid()

if __name__ == "__main__":
    MyApp().run()

此代码将 text_size 设置为始终跟随 MyLabel class 中的小部件 size。使用 kv 设置绑定,以便 text_size 将随着小部件 size 的变化而变化。

你不能,这在基维是不可能的。 虽然在 tkinter

中是可能的