我创建了一个按钮'添加输入框'这将添加一个输入框 用户按下它,因为我不知道输入框的数量 用户可能需要。
这些输入框应垂直排列,以便添加每个输入框 将在前一个位置正下方的特定位置创建 不考虑size_hint(即使它是一个输入框,它 不应该覆盖屏幕。如果我告诉它在位置(0,10),它 不应超过那个位置。)
我尝试了BoxLayout,它创建的第一个InputBox覆盖了 整个屏幕。第二个占据屏幕的50%。第三个, 屏幕的1/3等等。
我使用下面的代码检查了FloatLayout:
class NextWindow(Screen):
def __init__(self, **kwargs):
super(NextWindow, self).__init__(**kwargs)
self.count_box = 1
self.layout = FloatLayout()
def addInputBox(self, obj):
inputBox = TextInput(multiline=False,size_hint=(0.2, 0.05),
pos_hint={'top': self.count_box})
if self.count_box < 150:
self.count_box = self.count_box + 10 #Changes the value of the position
self.layout.add_widget(inputBox) #so that the next InputBox is created
else: #under the previous one.
pass #When 14 InputBoxes have been created
按下按钮 &#39;添加InputBox&#39;,改变self.count_box的值,使其值为 &#39;顶部&#39;每次调用后都会更改,以便下一个InputBox位于前一个InputBox之下。
这并没有占据整个屏幕。它只显示了第一个InputBox,但当&#39; Add InputBox&#39;时,屏幕上不显示后续的InputBox。被按下了。
答案 0 :(得分:0)
这源于对pos_hint属性的理解不足。实现它的一种方法是忽略pos_hint并提供实际的位置属性,&#39; pos&#39; pos。 &#39; pos&#39;的价值每次点击“添加课程”后都会更改。按钮。