在pyqt5中选项卡关闭后,声音继续



我使用pyqt5制作网络浏览器只是为了好玩,我看到当我关闭一个选项卡时,该选项卡中播放的音频会继续播放,直到我退出浏览器。有什么办法解决的吗?

编辑:

def close_current_tab(self, i):
if self.tabs.count() < 2:
return
self.tabs.removeTab(i)

removeTab()文档中所述:

页面小部件本身不会被删除。

这意味着小部件将继续存在(并在后台继续工作,从而播放音频并不必要地使用CPU/内存(,即使它不再可见。

为了正确地删除对象,您需要在删除选项卡之前检索(否则您将不再获得其引用(,并调用deleteLater():

def close_current_tab(self, i):
if self.tabs.count() < 2:
return
page = self.tabs.widget(i)
self.tabs.removeTab(i)
page.deleteLater()

请注意,这应该在Qt对象被删除的任何时候进行,并且该操作并没有专门删除该对象,因此您必须始终阅读文档才能验证这一点。

这对浏览器页面来说显然是非常重要的,因为它们可能会占用大量的内存:一个现代网页大约需要10-20 MB(请参阅浏览器的任务管理器(,对于流媒体服务和社交网络等复杂网站,有些页面需要高达100-150 MB(一个Facebook主页只显示15-20条帖子就需要150 MB以上(;打开和关闭十几个这样的页面而不删除它们,在几秒钟内,你的程序将使用超过千兆字节的ram和大量的CPU使用量,因为许多网站即使在不可见的情况下也会进行一些处理(动态更新、推送通知、视频解码、横幅加载等(

最新更新