【问题标题】:Kivy ScrollView exception raise Exception('ScrollView accept only one widget')Kivy ScrollView 异常引发 Exception('ScrollView 只接受一个小部件')
【发布时间】:2014-01-29 08:36:09
【问题描述】:

使用以下代码,在我将信息输入到我的应用程序的文本框中后,offset_back 返回一个列表和 self.main,我的 .kv 文件中用于创建滚动视图的 id 添加了布局,但是当我再次尝试重新输入数据时,会发生这种情况:“引发异常('ScrollView 只接受一个小部件')”

我是否需要以某种方式重置 self.main,如果需要,我该如何实现? 谢谢。

def set_back_offset(self):
    layout = GridLayout(cols=1, spacing=10, size_hint_y=None)
    layout.bind(minimum_height=layout.setter('height'))

     # catch empty box input which is a str, as Decimal will throw error.
    if self.initial_bet.text == str() or self.initial_odds.text == str():
        pop_warning().open()
     #make sure entered unicode text is numeric, if not throw pop-up warning
    elif not unicode.isnumeric(self.initial_bet.text) or not unicode.isnumeric(self.initial_odds.text):
            pop_warning().open()

    else:# all is good, create widgets
        for details in offset_back(Decimal(self.initial_bet.text), Decimal(self.initial_odds.text)):
            btn = Button(text=str(details[0]), size_hint_y=None, height=40,background_color= (255,0,0,1))
            layout.add_widget(btn)
        self.main.add_widget(layout)

`

【问题讨论】:

    标签: python user-interface kivy


    【解决方案1】:

    我假设 ScrollView 是 self.main?问题可能是它在锡上所说的,它只接受一个小部件,并且当您尝试添加另一个小部件时它已经有了一个孩子。

    一个简单的解决方法是首先使用self.main.remove_widget(self.main.children[0]) 之类的内容删除现有小部件。但是,如果您想用外观相似的东西替换它们,最好更改现有小部件的某些属性。

    无论哪种方式,解决方案是在添加新的 ScrollView 子之前删除现有的 ScrollView。

    【讨论】:

    • ,谢谢,我理解了我只是不知道如何删除孩子的异常,这是我第一次使用任何 gui,所以对我来说都是新的。如果我移除孩子,屏幕不会返回任何内容。我在 self.main.add_widget(layout) 之后做 self.main.remove_widget(self.main.children[0])。我以为它会显示数据然后删除孩子,我错了吗?
    • 您需要在添加新的之前删除旧的孩子。尽管使用您的原始描述,但我原以为它会比那更早崩溃。无论哪种方式,请继续遵循这个总体思路来解决问题。
    • 我看到我的逻辑是倒退的,我把 self.main.remove_widget(self.main.children[0]) 放在方法的第一行,但我仍然遇到同样的异常。我将继续按照您的建议进行工作,并会解决,再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 2017-05-28
    • 2015-12-03
    • 2017-09-18
    • 1970-01-01
    相关资源
    最近更新 更多