如果 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
中是可能的
'''
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 中:
任何建议都会有所帮助谢谢。
您可以使用 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
中是可能的