Как выровнять поля ввода в киви? - PullRequest
0 голосов
/ 04 мая 2020

Я новичок в Kyvi и хочу понять, как установить позицию ввода текста с помощью BoxLayout. Вот мой файл кв. Моя цель - добавить это маленькое поле ввода справа к первому (в списке) полю ввода. Вы можете помочь мне?

Мой код здесь https://ctxt.io/2/AADAAHVcFA

my programs interface

Также проверьте скриншот для лучшего понимания ..

1 Ответ

0 голосов
/ 04 мая 2020

Kivy предлагает вам хороший выбор макетов в зависимости от ваших потребностей. В этом случае boxlayout не очень хороший подход, так как он позволяет установить только одну ориентацию. Если вы действительно хотите использовать boxlayout, вы должны использовать вертикальную ориентацию для mainlayout, и для каждой строки, где у вас есть более одного входного виджета, вам нужно определить подслой с горизонтальной ориентацией. это может быть что-то вроде этого:

Пример: BoxLayout

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.textinput import TextInput
from kivy.core.window import Window


class MyApp(App):
    def build(self):
        Window.size = (400, 600)
        mainlayout = BoxLayout(orientation="vertical", padding=(20, 40))
        sublayout = BoxLayout(orientation="horizontal")

        sublayout.add_widget(TextInput(size_hint=(None, None), size=(Window.width * 0.7 - mainlayout.padding[1], Window.height * 0.1)))
        sublayout.add_widget(TextInput(size_hint=(None, None), size=(Window.width * 0.3, Window.height * 0.1)))

        mainlayout.add_widget(sublayout)
        mainlayout.add_widget(TextInput(size_hint=(None, None), size=(Window.width - mainlayout.padding[1], Window.height * 0.1)))
        mainlayout.add_widget(TextInput(size_hint=(None, None), size=(Window.width - mainlayout.padding[1], Window.height * 0.1)))

        return mainlayout

MyApp().run()

Более простой способ в этом случае - это разметка стека, поскольку она позволяет определить горизонтальное и вертикальное направление. порядок ваших виджетов. Это может выглядеть так:

Пример: StackLayout

from kivy.app import App
from kivy.uix.stacklayout import StackLayout
from kivy.uix.textinput import TextInput
from kivy.core.window import Window


class MyApp(App):
    def build(self):
        Window.size = (400, 600)
        layout = StackLayout(orientation="lr-tb", padding=(20, 40))

        layout.add_widget(TextInput(size_hint=(None, None), size=(Window.width * 0.7 - layout.padding[1], Window.height * 0.1)))
        layout.add_widget(TextInput(size_hint=(None, None), size=(Window.width * 0.3, Window.height * 0.1)))
        layout.add_widget(TextInput(size_hint=(None, None), size=(Window.width - layout.padding[1], Window.height * 0.1)))
        layout.add_widget(TextInput(size_hint=(None, None), size=(Window.width - layout.padding[1], Window.height * 0.1)))

        return layout

MyApp().run()

Ориентация определяется как «lr-tb», что означает «слева направо», и если больше нет места go "сверху вниз". Вы можете изменить это в соответствии с вашими потребностями. Я надеюсь, я мог бы помочь вам.

...