我有一个下拉列表,里面有个月的列表。当选择了月份时,我尝试在第二个下拉列表中动态填充按钮,其中包含正确的天数。当我这样做时,我得到:
ReferenceError: weakly-referenced object no longer exists
以下是我的文件供参考:
在主.py公司名称:
^{pr2}$在调度器.kv公司名称:
^{3}$我认为这个问题是由Kivy代码而不是Python代码创建的。我所做的测试使我相信我引用DayDropDown小部件是错误的。但是,我不知道我会怎么做。我已经记下了,我该怎么做呢?如果这不是我的问题,那么还有什么可能导致ReferenceError被抛出?在
编辑:
把我的代码弄乱了一点。我创建了一个新的类“globAddable”,方法是“getID”(一个简单的返回self),并将setID放在那里。然后我设置我的setID现在赋值self.getID()添加到变量,然后将该变量用作要添加到globObjects(以前称为globIDs)字典的对象。在
我还为DropDown对象创建了一个新类,名为ExtDropArray,它位于DayDropDown中。我将populate()方法移到了这个新类中,这样它就可以由下拉菜单直接调用,而不是它的父BoxLayout。我让ExtDropArray和ExtDropDown从globAddable继承来公开setID(和隐式getID)方法。在
所有这些的最终结果都是一样的。当点击DayDropDown上的按钮时,我仍然看不到我的day下拉列表,并且在MonthDropDown上用不同的值进行测试后,我再次得到“ReferenceError:弱引用对象不再存在”错误。但是,我注意到有问题的行实际上是打开下拉列表的方法(drop.打开(ddRoot),在my.kv文件的第114行调用。这仍然不能给我足够的信息来知道是哪个部分导致了错误,不管是添加按钮到下拉列表还是调用open方法。有了这些新的信息,有人能推断出什么需要改变吗?在
好吧,我终于弄明白了。在
我的ReferenceError不是我的方法造成的,而是我对DropDown对象实现的一个基本误解。解决办法很简单
这花了我很长时间才找到,但却是以this文档的形式出现的。由于没有其他帖子提到这些引用错误,所以我把它放在这里供其他人使用,以防他们遇到类似的问题。在
相关问题 更多 >
编程相关推荐