Я изучаю, как использовать Kivy, и я хотел бы знать, как я могу выровнять метки внутри списка, который я создал.
Метки по умолчанию центрированы, и я хотел бы выровнять все метки по левому краю.
Мой код:
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.listview import SimpleListAdapter
from kivy.uix.listview import ListView
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
class TestApp(App):
def build(self):
messages = ["a", "b"]
layout = BoxLayout(orientation='vertical')
btn1 = Button(text='Hello')
textinput = TextInput(text='Hello world', size_hint=(1, 0.1))
messages.append("sd")
simple_list_adapter = SimpleListAdapter(
data=messages,
cls=Label)
simple_list_adapter.cls
list_view = ListView(adapter=simple_list_adapter)
layout.add_widget(list_view)
layout.add_widget(textinput)
return layout
TestApp().run()






Простое решение — создать метку с желаемым выравниванием.
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.listview import SimpleListAdapter
from kivy.uix.listview import ListView
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
class LeftLabel(Label):
def __init__(self, **kwargs):
super(LeftLabel, self).__init__(**kwargs)
# https://kivy.org/doc/stable/api-kivy.uix.label.html#text-alignment-and-wrapping
self.halign = "left"
self.bind(size=self.setter("text_size"))
class TestApp(App):
def build(self):
messages = ["a", "b"]
layout = BoxLayout(orientation = "vertical")
btn1 = Button(text = "Hello")
textinput = TextInput(text = "Hello world", size_hint=(1, 0.1))
messages.append("sd")
simple_list_adapter = SimpleListAdapter(data=messages, cls=LeftLabel)
list_view = ListView(adapter=simple_list_adapter)
layout.add_widget(list_view)
layout.add_widget(textinput)
return layout
TestApp().run()
Поскольку вы начинаете с kivy, рекомендуется изучить RecycleView вместо ListView, поскольку последний — устарел:
Deprecated since version 1.10.0: ListView has been deprecated, use RecycleView instead.