Kivy Python-文本输入框填充整个浮动布局屏幕

Posted

技术标签:

【中文标题】Kivy Python-文本输入框填充整个浮动布局屏幕【英文标题】:Kivy Python- Text Input Box Filling Entire Float Layout Screen 【发布时间】:2017-12-12 10:39:54 【问题描述】:

我在 Kivy 中遇到了 TextInput 的问题。

当我将它添加到我的一个屏幕上的现有FloatLayout 时,它会占据整个窗口,即使指定了高度也是如此。我想把它保存在 .py 文件中,所以请不要在 .kv 文件中添加任何样式选项来调整大小。

class WebsiteInput(Screen):
    def __init__(self, **kwargs):
        super(WebsiteInput, self).__init__(**kwargs)
        Clock.schedule_once(self._finish_init)

    def _finish_init(self, dt):
        # Title Label
        self.lbl1 = Label(text="Enter a URL to bind to this button:", pos=(self.x, self.height +132))
        self.lbl1.font_name = 'Montserrat-Bold.ttf'
        self.lbl1.font_size = 28
        self.ids.float_web.add_widget(self.lbl1)
        # URL Text Input
        self.web_input = TextInput(height=100)
        self.web_input.height = 100
        self.ids.float_web.add_widget(self.web_input)

如您所见,我已尝试在两个不同位置影响大小,但它仍会填满整个窗口。

【问题讨论】:

【参考方案1】:

要使size 属性生效,您需要size_hint 属性在相应轴上为None

class WebsiteInput(Screen):
    def __init__(self, **kwargs):
        super(WebsiteInput, self).__init__(**kwargs)
        Clock.schedule_once(self._finish_init)

    def _finish_init(self, dt):
        # Title Label
        self.lbl1 = Label(text="Enter a URL to bind to this button:",
                          pos=(self.x, self.height +132))
        self.lbl1.font_name = 'Montserrat-Bold.ttf'
        self.lbl1.font_size = 28
        self.ids.float_web.add_widget(self.lbl1)
        # URL Text Input
        self.web_input = TextInput(height=100, 
                                   size_hint = (1,  None))
        self.ids.float_web.add_widget(self.web_input)

【讨论】:

你能告诉我size和size_hint的区别吗?不是多余的吗? @Austin 不是多余的,size 表示 绝对 大小(以像素为单位)。另一方面,size_hint 表示大小,但 相对于父大小,它是父大小的一小部分(范围 0 到 1)。使用 size 小部件始终具有相同的大小,使用size_hint,如果父级增长,则子级增长以保持比例。在您的情况下,如果您调整窗口大小,TextInput 高度将始终为 100,但宽度将增加以占据整个 FloatLayout 宽度(1 = 100%)。

以上是关于Kivy Python-文本输入框填充整个浮动布局屏幕的主要内容,如果未能解决你的问题,请参考以下文章

文本输入突然停止在 Kivy 应用程序中工作

如何在 Kivy、Python 中更新标签的文本

kivy textinput 无法输入文字

Python & Kivy - 显示/隐藏框

在 Kivy 应用程序中获取文本输入值

如何在kivy中使用浮动布局在应用程序的左下角放置标签?