实际上我用kivy.uix.videoplayer moule来播放我的视频,并且我创建了一个函数,我在其中编写了播放视频的代码,
def hi(self):
return VideoPlayer(source='it.mp4', state='play')
令人困惑的是,当我使用return
时,它可以很好地播放视频,但是当我不使用&#34时,返回" VideoPlayer()如下所示:
def hi(self):
VideoPlayer(source='it.mp4', state='play')
然后只播放声音,视频未显示且出现错误;
[ERROR ] [Image ] Error loading texture it.mp4
我在使用return
(我一直都是)时有点困惑
所以请告诉我return
声明。
答案 0 :(得分:5)
当没有任何内容引用它们时,Python对象会自动删除。通过不返回对象,您基本上确保没有引用VideoPlayer
对象的任何内容,并且在函数返回时删除Python对象。
使用return
时,大概是调用,hi()
方法存储了对返回的VideoPlayer()
实例的引用,保持活着:
video_player = someinstance.hi()
不返回return
None
。如果您留在return
语句中,但直接致电someinstance.hi()
而不将返回值存储在任何位置,则会获得相同的行为;要删除VideoPlayer()
对象,因为没有对它的引用。
Kivy不是只是 Python; Python对象只是本机数据结构和代码的代理。声音处理程序在创建VideoPlayer()
时启动,但是几乎没有立即删除对象,因此没有清理它。