使用 WXPython 在 Python 中的计时精度

Posted

技术标签:

【中文标题】使用 WXPython 在 Python 中的计时精度【英文标题】:Timing accuracy in Python using WXPython 【发布时间】:2013-11-25 20:13:46 【问题描述】:

我正在制作一个简单的 mp3 播放器,可以一次播放多个 mp3。它的行为就像在混合。时机对于确保愉快的用户体验至关重要,否则听起来就像两只猫试图解决中东危机。我需要将精度降低到 10 毫秒,如果不成功,可能需要 1 毫秒的精度。

目前,我正在使用 wxpython,我发现计时功能很差(但非常适合音频播放)。

import wx
import wx.media

class MediaPanel(wx.Panel):
    INTERVAL = 10

    def tick(self, event):
        self.totalMS += self.INTERVAL

        if mixstart == self.totalMS:
            # play the song

        elif mixend == self.totalMS:
            # stop the song

        else 
            pass

所以这是我的问题:我发现时间不一致。我可以将相同的歌曲加载到一个播放列表中准备混合,它会在看似随机的时间混合。一般来说,我对编程还是很陌生,据我所知,这是不准确的计时功能。出于调试目的,我将打印一个时间戳,让我知道我在函数中的位置。由于某种原因,计时器会随机停止,然后重新启动。

问题:有没有更好的方法来做到这一点?还是 wx 只是因为这样的事情而坏了?

【问题讨论】:

【参考方案1】:

我认为您无法在任何 GUI 库中可靠地混合 mp3 播放。这不是为了同步声音,如果你只是调用两个函数播放 mp3 我相信没有办法控制时间。

想到的最简单的方法是先混合两个曲目然后播放(如this question)。这还不够好吗?

【讨论】:

以上是关于使用 WXPython 在 Python 中的计时精度的主要内容,如果未能解决你的问题,请参考以下文章

如何用python调用wxpython写的下拉框中的选项

wxpython grid

wxpython 中的所有控件及高级应用

如何为python 3.6安装wxPython phoenix

全屏 Python TKinter 或 wxPython 窗口,但“停留在所有窗口的底部”?

wxpython 安装教程