Kivy: How to add padding to a Text Input

10,424

TextInput has also a padding property.

Change this to match the padding on your label

TextInput:
    padding_x:[20,0]

Here is a sample App I wrote to see that adopted from your code. Unfortunately, your code has several issues and it was easier to do it like that enter image description here

from kivy.app import App
from kivy.base import Builder
from kivy.uix.boxlayout import BoxLayout

Builder.load_string("""
<rootwi>:
    orientation: 'vertical'
    Label:
        font_size: 24
        text: 'iuqwdouqwdoqdwpqwpow'
        color: 0.447, 0.094, 0.737, 1
        text_size: root.width, None
        size: self.texture_size
        padding_x: 20
    TextInput:
        padding_x:[20,0]
""")
class rootwi(BoxLayout):
    pass

class MyApp(App):
    def build(self):
        return rootwi()


if __name__ == '__main__':
    MyApp().run()
Share:
10,424
blakebullwinkel
Author by

blakebullwinkel

Updated on July 12, 2022

Comments

  • blakebullwinkel
    blakebullwinkel almost 2 years

    Just a simple problem here - I would like to add some 'padding' to my text input box so as to align it with a label above it: see here

    Here are the relevant sections of my .kv file:

    <InstructionsLabel>:
        font_size: 24
        size_hint_y: None
        color: 0.447, 0.094, 0.737, 1
        text_size: root.width, None
        size: self.texture_size
        padding_x: 20
    
    <LengthExactScreen>:
        canvas.before:
            Color:
                rgba: 1, 1, 1, 1
            Rectangle:
                pos: self.pos
                size: self.size
        FloatLayout:
            DirectionButton:
                text: "Back"
                pos_hint: {'left': 1, 'top': 1}
                on_press:
                    root.manager.transition.duration = 0
                    root.manager.current = "tool_screen"
            DirectionButton:
                text: "Done"
                pos_hint: {'right': 1, 'top': 1}
                on_press: root.compute_orders(root.itemList, int(len_exact_input.text))
        GridLayout:
            cols: 1
            pos_hint: {'top': 0.86}
            BoxLayout:
                size_hint_y: None
                height: self.minimum_height
                orientation: "vertical"
                InstructionsLabel:
                    text: "Enter the number of items you want to order"
                TextInput:
                    id: len_exact_input
                    size_hint: None, None
                    width: 300
                    height: 35
                    multiline: False
                    hint_text: ""
    
  • Daniel B.
    Daniel B. over 5 years
    padding_x and padding_y are depcrecated, you should use padding instead. kivy.org/doc/stable/api-kivy.uix.textinput.html