因此,这里是我的错误代码我认为有什么硬在这个错误,我在论坛上寻找,但无法找到。
而且......我有这个错误 在我的手机上 (有 kivy launcher python 3 而当我用buildozer构建) 但不是在我的电脑上 (ubuntu 18.0.4 and windows 10)这个错误,从我的理解来看,来自于垃圾收集器,它删除了一个引用,而代码试图在垃圾收集器之后访问这个引用,但我不确定我是否真正理解垃圾收集器的事情。
我试了一下:
id: id.__self__
在我的kv文件中
self.refs = [
self.id.__self__,
self.id.__self__]
-使用ErrorHandler来处理错误,但错误一直在发生。
我认为造成这个错误的原因是什么,但我不知道如何修复它。
我使用时钟向服务器发送请求,但我不知道为什么(self.requestClient是一个发送请求的函数)。
C = Clock.schedule_interval(self.requestClient, 5)
这些信息在 Kivy时钟文件 :
重要信息
回调是弱引用的:您有责任为您的原始对象回调保留一个引用。如果您不保留一个引用,ClockBase将永远不会执行您的回调。
错误 :
[ERROR ] Exception catched by ExceptionHandler
05-07 11:27:45.694 2788 2823 I python : Traceback (most recent call last):
05-07 11:27:45.694 2788 2823 I python : File path/kivy-launcher/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/launcher/kivy/core/window/window_sdl2.py", line 747, in mainloop
05-07 11:27:45.694 2788 2823 I python : File "/path/kivy-launcher/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/launcher/kivy/core/window/window_sdl2.py", line 479, in _mainloop
05-07 11:27:45.694 2788 2823 I python : File "/path/kivy-launcher/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/launcher/kivy/base.py", line 339, in idle
05-07 11:27:45.694 2788 2823 I python : File "/path/kivy-launcher/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/launcher/kivy/clock.py", line 591, in tick
05-07 11:27:45.694 2788 2823 I python : File "kivy/_clock.pyx", line 384, in kivy._clock.CyClockBase._process_events
05-07 11:27:45.694 2788 2823 I python : File "kivy/_clock.pyx", line 414, in kivy._clock.CyClockBase._process_events
05-07 11:27:45.694 2788 2823 I python : File "kivy/_clock.pyx", line 412, in kivy._clock.CyClockBase._process_events
05-07 11:27:45.694 2788 2823 I python : File "kivy/_clock.pyx", line 154, in kivy._clock.ClockEvent.tick
05-07 11:27:45.694 2788 2823 I python : File "kivy/_clock.pyx", line 86, in kivy._clock.ClockEvent.get_callback
05-07 11:27:45.694 2788 2823 I python : File "/path/kivy-launcher/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/launcher/kivy/weakmethod.py", line 56, in is_dead
05-07 11:27:45.694 2788 2823 I python : ReferenceError: weakly-referenced object no longer exists
感谢您的阅读 !
官方文档 (Kv语言编程指南)说要添加 "强 "的引用,如 id_name: id_name.__self__
在KV代码中,但不清楚哪里需要这样做。更重要的是,它并没有解决这个问题。ReferenceError: weakly-referenced object no longer exists
我的错误。
ぐ或 做了 的工作,迫使Buildozer使用特定版本的 hostpython3
在此基础上加上 requirements
行的buildozer.spec文件。
python3==3.7.5, hostpython3==3.7.5
还有一点需要注意的是,在将上述内容添加到 requirements
我回去把我所有的 __self__
引用,但仍然可以正常工作,所以显然在Kivy KV语言中不再需要这些。
这要归功于 来自leo10011的美丽回答.
2020-05-19更新: 这个错误 据称已经修复 在Kivy 2.0中。
我通常会做的是保留一个引用,如 my_object
的引用,我通常会在其中添加 my_object: my_object.__self__
一行 kv
我的一部分 root
规则。
由于你没有提供任何代码,我不能更具体的... ...