2017-07-08 60 views
1

我遇到了Kivy中的TextInput问题。Kivy Python-文本输入框填充整个浮动布局屏幕

当我把它添加到现有的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) 
+0

你能告诉我的尺寸和size_hint之间的区别?它不是多余的吗? – John

+2

@奥斯汀它不是多余的,'size'表示一个**绝对**大小(以像素为单位)。在另一方面,'size_hint'表示尺寸,但相对于** **与母体大小,it's父大小(范围0到1)的一小部分。对于大小,小部件总是具有相同的大小,使用'size_hint',如果父项增长,则子项增长以保持比例。在你的情况,如果你调整窗口的大小,高度的TextInput将永远是100,但宽度将增加到占据整个FloatLayout宽度(1 = 100%)。 – FJSevilla