实际上我用kivy.uix.videoplayer moule来播放我的视频,并且我创建了一个函数,我在其中编写了播放视频的代码,
def hi(self):
return VideoPlayer(source='it.mp4', state='play')
Run Code Online (Sandbox Code Playgroud)
困惑是当我使用return它时播放视频非常好,但是当我不使用"return"VideoPlayer()时,如下所示:
def hi(self):
VideoPlayer(source='it.mp4', state='play')
Run Code Online (Sandbox Code Playgroud)
然后只有声音播放,视频没有显示,错误来了;
[ERROR ] [Image ] Error loading texture it.mp4
Run Code Online (Sandbox Code Playgroud)
我在使用中有点困惑return(我一直都是)所以请告诉我关于return声明.
当没有任何引用它们时,Python对象会自动删除.通过不返回对象,您基本上确保没有引用该VideoPlayer对象的任何内容,并且在函数返回时删除Python对象.
当您使用return,想必任何调用的hi()存储到返回的参考方法VideoPlayer()实例,保持它活着:
video_player = someinstance.hi()
Run Code Online (Sandbox Code Playgroud)
没有return None返回而是返回.如果你留在return语句中,但someinstance.hi()直接调用而不将返回值存储在任何地方,你会得到相同的行为; VideoPlayer()要删除的对象,因为没有对它的引用.
Kivy不只是 Python; Python对象只是本机数据结构和代码的代理.声音处理程序从VideoPlayer()创建时开始,但几乎没有立即删除对象.