python-3.x Kivy:如何为文本输入添加填充

csbfibhn  于 2023-03-04  发布在  Python
关注(0)|答案(3)|浏览(133)

这里有一个简单的问题-我想在文本输入框中添加一些"填充",以便与上面的标签对齐:参见here
下面是我的. kv文件的相关部分:

<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: ""
7lrncoxx

7lrncoxx1#

TextInput还有一个padding属性。
更改此设置以匹配标注上的填充

TextInput:
    padding_x:[20,0]

下面是我编写的一个示例应用程序,它是从您的代码中采用的。不幸的是,您的代码有几个问题,像

这样做更容易

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()
dw1jzc5e

dw1jzc5e2#

填充是TextInput内部的,只会让它变大--它不会帮助它与有填充的标签中的文本对齐。不幸的是Kivy没有“边距”的概念,所以让TextInput的框与填充的标签对齐的最简单的方法是将它 Package 在一个有透明背景的容器中。并设置该小部件上的填充-有效地伪造了边距。例如:

BoxLayout:
    orientation: "vertical"
    Label:
        text: "Hello World!"
        padding: dp(20), dp(10)
    BoxLayout:
        padding: dp(20), dp(10)
        TextInput:
            text: "Hello to you too!"

虽然经常令人讨厌,但这种行为完全有道理;Label是一个带有填充和背景的框,就像TextInput一样,当您添加填充时,Label会增长-只是您没有注意到这一点,因为与TextInput不同,Label没有背景 * 颜色 *。

bsxbgnwa

bsxbgnwa3#

你也可以做一些研究@kivy text input.那应该会给予你所有你需要的信息甚至更多。

相关问题