Valign не работает в киве?

1

У меня есть этот файл kivy:

<Help>:
    Label:
        text: "[b]Help Page[/b]\n"
        font_size: 30
        markup: True
        valign: "top"
        color: 0,0,0,1
    Label:
        text: "[b] How To Use:[/b]\n"
        font_size: 30
        markup: True
        valign: 'top'
        color: 0,0,0,1

Однако текст не попадает в начало страницы. Это результат:

Изображение 174551

Что не так с этим? и могу ли я также спросить о том, как форматировать эти перекрывающиеся тексты. Спасибо :)

edit: Это то, что я хочу сделать с текстом:

желаемый выход

Изображение 174551

Поэтому, чтобы получить этот результат, я попытался использовать valign и halign для форматирования текста, но он, похоже, не работает. Надеюсь, это прояснило мой вопрос :)

  • 0
    что такое Help ?
  • 0
    Справка является экраном и должна отображать страницу справки :)
Показать ещё 1 комментарий
Теги:
python-3.x
kivy
kivy-language

1 ответ

2
Лучший ответ

Показать текст вверху

Чтобы отобразить текст сверху с помощью valign: 'top', замените text_size: root.width, None с text_size: root.width, root.height

отрывок

<Help>:
    Label:
        id: help
        text_size: root.width, root.height
        markup: True
        valign: 'top'
        halign: 'center'
        color: 0,0,0,1

Выход

Изображение 174551

Показать обе строки как один

Чтобы отобразить обе строки: "Как работать: некоторый текст здесь" и "Некоторое название" Еще один текст "как один, мы сделаем следующее:

файл kv

<Help>:
    Label:
        id: help
        text_size: root.width, None
        markup: True
        halign: 'center'
        color: 0,0,0,1

Код Python

class Help(Screen):

    def on_pre_enter(self, *args):
        self.ids.help.text = "[size=30][b]How to Operate[/b][/size]\nSome text here" + \
                             "\n\n[size=30][b]Some title[/b][/size]\nSome more text"

Вывод - комбинированный текст

Изображение 174551

Перекрытие текста

Текст метки перекрывается, потому что вы добавляете два ярлыка Label поверх друг друга в макете экрана.

Добавьте BoxLayout в качестве родителя двух виджетов Label, чтобы предотвратить перекрытие текста.

Обтекание текстом

Обтекает текст определенной ширины, обеспечивает ширину. Например, ярлык должен быть создан в поле с шириной 200 и неограниченной высотой.

Label(text='Very big big line', text_size=(200, None))

отрывок

<Help>:
    BoxLayout:
        orientation: 'vertical'

        Label:
            text_size: dp(230), None
            height: self.texture_size[1]
            text: "[size=30][b]How to Operate[/b][/size]Some text here"
            markup: True
            valign: "top"
            halign: 'center'
            color: 0,0,0,1

        Label:
            text_size: dp(150), None
            text: "[size=30][b]Some title[/b][/size]Some more text"
            markup: True
            valign: 'top'
            halign: 'center'
            color: 0,0,0,1

Выход

Изображение 174551

Выравнивание текста

Добавить text_size: self.size

отрывок

<Help>:
    Label:
        text_size: self.size
        text: "[b]Help Page[/b]\n"
        font_size: 30
        markup: True
        valign: "top"
        color: 0,0,0,1
    Label:
        text_size: self.size
        text: "[b] How To Use:[/b]\n"
        font_size: 30
        markup: True
        valign: 'top'
        color: 0,0,0,1

Выравнивание и обтекание текста

Чтобы свойства выравнивания halign и valign вступили в силу, установите text_size, который определяет размер ограничивающего прямоугольника, в котором выравнивается текст.

Выход

Изображение 174551

  • 0
    Решение работает, но что, если, например, я хочу текст прямо под текстом «как работать», как бы я это сделал?
  • 0
    И не могу ли я объединить оба, так что я могу отформатировать его, а также не допустить наложения текста?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню