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

Sound continues after tab close in pyqt5

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

编辑:

def close_current_tab(self, i):

        if self.tabs.count() < 2:
            return

        self.tabs.removeTab(i)

removeTab() 文档中所述:

The page widget itself is not deleted.

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

为了正确地删除对象,您需要在删除选项卡之前检索它(否则您将无法获取它参考),然后调用 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 -20mb(查看浏览器的任务管理器),对于流媒体服务和社交网络等复杂网站,有些会高达 100-150mb(Facebook 主页在显示 15-20 个帖子后需要超过 150mb);打开和关闭其中的许多页面而不删除它们,几秒钟内您的程序将使用超过 1 GB 的内存和大量 CPU 的使用,因为许多网站即使在不可见的情况下也会进行一些处理(动态更新、推送通知、视频解码、横幅加载等)。