【发布时间】:2017-01-16 08:16:06
【问题描述】:
尝试执行以下代码时(来自kivy-designer 的编辑版本,受 MIT 许可):
def __init__(self, **kwargs):
self._buttons = {}
super(PlaygroundSizeView, self).__init__(**kwargs)
for title, values in self.default_sizes:
grid = StackLayout(orientation="lr-tb", size_hint=(1, None))
def sort_sizes(item):
return item[1][1] * item[1][0]
values = sorted(values, key=sort_sizes, reverse=True)
for name, size in values:
btn = ToggleButton(text='', markup=True, size_hint=(0.25, 0.25))
btntext = ('%s\n[color=777777][size=%d]%dx%d[/size][/color]' %
(name, btn.font_size * 0.8, size[0], size[1]))
btn.text = btntext
btn.bind(on_press=partial(self.set_size, size))
grid.add_widget(btn)
self._buttons[name] = btn
item = AccordionItem(title=title)
_sv = ScrollView(do_scroll_x=False)
_sv.add_widget(grid)
item.add_widget(_sv)
self.accordion.add_widget(item)
self.accordion.select(self.accordion.children[-1])
self.update_buttons()
在程序停止之前,我连续 7 次收到不同数字的错误:
异常被忽略:functools.partial(, 3385)
回溯(最近一次通话最后一次):
_widget_destructor 中的文件“E:\Programme(x86)\Python\Kivy Virtual Environment\lib\site-packages\kivy\uix\widget.py”,第 239 行 关键错误:(3385,)
它仅在我编辑代码并在#1 处添加ScrollView 后出现。我认为这可能是 python 正在尝试垃圾收集 ScrollView 但不知何故无法。
widget.py 的第 239 行是以下函数的del 行:
def _widget_destructor(uid, r):
# Internal method called when a widget is deleted from memory. the only
# thing we remember about it is its uid. Clear all the associated callbacks
# created in kv language.
del _widget_destructors[uid]
Builder.unbind_widget(uid)
提前非常感谢!
【问题讨论】:
标签: python kivy destructor keyerror