uTools-Manuals/docs/python/winsound.html
2019-04-21 11:50:48 +08:00

8 lines
14 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="body" role="main"><div class="section" id="module-winsound"><h1><span class="yiyi-st" id="yiyi-10">34.4. <a class="reference internal" href="#module-winsound" title="winsound: Access to the sound-playing machinery for Windows. (Windows)"><code class="xref py py-mod docutils literal"><span class="pre">winsound</span></code></a> — 针对windows的声音播放接口</span></h1><p><span class="yiyi-st" id="yiyi-11"><a class="reference internal" href="#module-winsound" title="winsound: Access to the sound-playing machinery for Windows. (Windows)"><code class="xref py py-mod docutils literal"><span class="pre">winsound</span></code></a> 模块可以访问windows平台提供的基本声音播放接口.</span><span class="yiyi-st" id="yiyi-12">它包含以下几个函数与常量.</span></p><dl class="function"><dt id="winsound.Beep"><span class="yiyi-st" id="yiyi-13"> <code class="descclassname">winsound.</code><code class="descname">Beep</code><span class="sig-paren">(</span><em>frequency</em>, <em>duration</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-14">让电脑发出"哔"的声音.</span><span class="yiyi-st" id="yiyi-15"><em>frequency</em> 参数指定声音的频率以赫兹为单位并且范围必须在37到32,767之间.</span><span class="yiyi-st" id="yiyi-16"><em>duration</em> 参数指定声音持续的毫秒数.</span><span class="yiyi-st" id="yiyi-17">若系统不能发声r,则抛出 <a class="reference internal" href="exceptions.html#RuntimeError" title="RuntimeError"><code class="xref py py-exc docutils literal"><span class="pre">RuntimeError</span></code></a> 异常.</span></p></dd></dl><dl class="function"><dt id="winsound.PlaySound"><span class="yiyi-st" id="yiyi-18"> <code class="descclassname">winsound.</code><code class="descname">PlaySound</code><span class="sig-paren">(</span><em>sound</em>, <em>flags</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-19">从Platform API调用底层的<code class="xref c c-func docutils literal"><span class="pre">PlaySound()</span></code>函数。</span><span class="yiyi-st" id="yiyi-20"><em>声音</em>参数可以是文件名,音频数据作为字符串,或<code class="docutils literal"><span class="pre">None</span></code></span><span class="yiyi-st" id="yiyi-21">其解释取决于<em>标志</em>的值,它可以是下面描述的常量的按位或的组合。</span><span class="yiyi-st" id="yiyi-22">如果<em>声音</em>参数为<code class="docutils literal"><span class="pre">None</span></code>,任何当前播放的波形声音都会停止。</span><span class="yiyi-st" id="yiyi-23">如果系统指示错误,则会引发<a class="reference internal" href="exceptions.html#RuntimeError" title="RuntimeError"><code class="xref py py-exc docutils literal"><span class="pre">RuntimeError</span></code></a></span></p></dd></dl><dl class="function"><dt id="winsound.MessageBeep"><span class="yiyi-st" id="yiyi-24"> <code class="descclassname">winsound.</code><code class="descname">MessageBeep</code><span class="sig-paren">(</span><em>type=MB_OK</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-25">从Platform API调用底层的<code class="xref c c-func docutils literal"><span class="pre">MessageBeep()</span></code>函数。</span><span class="yiyi-st" id="yiyi-26">这播放在注册表中指定的声音。</span><span class="yiyi-st" id="yiyi-27"><em>类型</em>参数指定要播放的声音;可能的值为<code class="docutils literal"><span class="pre">-1</span></code><code class="docutils literal"><span class="pre">MB_ICONASTERISK</span></code><code class="docutils literal"><span class="pre">MB_ICONEXCLAMATION</span></code><code class="docutils literal"><span class="pre">MB_ICONHAND</span></code><code class="docutils literal"><span class="pre">MB_ICONQUESTION</span></code> <code class="docutils literal"><span class="pre">MB_OK</span></code>,以下所有。</span><span class="yiyi-st" id="yiyi-28"><code class="docutils literal"><span class="pre">-1</span></code>产生“简单哔声”;这是最后的回退,如果声音不能播放否则。</span></p></dd></dl><dl class="data"><dt id="winsound.SND_FILENAME"><span class="yiyi-st" id="yiyi-29"> <code class="descclassname">winsound.</code><code class="descname">SND_FILENAME</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-30"><em>sound</em>参数是WAV文件的名称。</span><span class="yiyi-st" id="yiyi-31">不要与<a class="reference internal" href="#winsound.SND_ALIAS" title="winsound.SND_ALIAS"><code class="xref py py-const docutils literal"><span class="pre">SND_ALIAS</span></code></a>一起使用。</span></p></dd></dl><dl class="data"><dt id="winsound.SND_ALIAS"><span class="yiyi-st" id="yiyi-32"> <code class="descclassname">winsound.</code><code class="descname">SND_ALIAS</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-33"><em>声音</em>参数是来自注册表的声音关联名称。</span><span class="yiyi-st" id="yiyi-34">如果注册表不包含此类名称,请播放系统默认声音,除非还指定<a class="reference internal" href="#winsound.SND_NODEFAULT" title="winsound.SND_NODEFAULT"><code class="xref py py-const docutils literal"><span class="pre">SND_NODEFAULT</span></code></a></span><span class="yiyi-st" id="yiyi-35">如果没有注册默认声音,引发<a class="reference internal" href="exceptions.html#RuntimeError" title="RuntimeError"><code class="xref py py-exc docutils literal"><span class="pre">RuntimeError</span></code></a></span><span class="yiyi-st" id="yiyi-36">不要与<a class="reference internal" href="#winsound.SND_FILENAME" title="winsound.SND_FILENAME"><code class="xref py py-const docutils literal"><span class="pre">SND_FILENAME</span></code></a>配合使用。</span></p><p><span class="yiyi-st" id="yiyi-37">所有Win32系统至少支持以下大多数系统支持更多</span></p><table border="1" class="docutils"><thead valign="bottom"><tr class="row-odd"><th class="head"><span class="yiyi-st" id="yiyi-38"><a class="reference internal" href="#winsound.PlaySound" title="winsound.PlaySound"><code class="xref py py-func docutils literal"><span class="pre">PlaySound()</span></code></a> <em>名称</em></span></th><th class="head"><span class="yiyi-st" id="yiyi-39">对应的控制面板声音名称</span></th></tr></thead><tbody valign="top"><tr class="row-even"><td><span class="yiyi-st" id="yiyi-40"><code class="docutils literal"><span class="pre">'SystemAsterisk'</span></code></span></td><td><span class="yiyi-st" id="yiyi-41">星号</span></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-42"><code class="docutils literal"><span class="pre">'SystemExclamation'</span></code></span></td><td><span class="yiyi-st" id="yiyi-43">感叹</span></td></tr><tr class="row-even"><td><span class="yiyi-st" id="yiyi-44"><code class="docutils literal"><span class="pre">'SystemExit'</span></code></span></td><td><span class="yiyi-st" id="yiyi-45">退出Windows</span></td></tr><tr class="row-odd"><td><span class="yiyi-st" id="yiyi-46"><code class="docutils literal"><span class="pre">'SystemHand'</span></code></span></td><td><span class="yiyi-st" id="yiyi-47">严重停止</span></td></tr><tr class="row-even"><td><span class="yiyi-st" id="yiyi-48"><code class="docutils literal"><span class="pre">'SystemQuestion'</span></code></span></td><td><span class="yiyi-st" id="yiyi-49"></span></td></tr></tbody></table><p><span class="yiyi-st" id="yiyi-50">例如:</span></p><pre><code class="language-python"><span></span><span class="kn">import</span> <span class="nn">winsound</span>
<span class="c1"># Play Windows exit sound.</span>
<span class="n">winsound</span><span class="o">.</span><span class="n">PlaySound</span><span class="p">(</span><span class="s2">"SystemExit"</span><span class="p">,</span> <span class="n">winsound</span><span class="o">.</span><span class="n">SND_ALIAS</span><span class="p">)</span>
<span class="c1"># Probably play Windows default sound, if any is registered (because</span>
<span class="c1"># "*" probably isn't the registered name of any sound).</span>
<span class="n">winsound</span><span class="o">.</span><span class="n">PlaySound</span><span class="p">(</span><span class="s2">"*"</span><span class="p">,</span> <span class="n">winsound</span><span class="o">.</span><span class="n">SND_ALIAS</span><span class="p">)</span>
</code></pre></dd></dl><dl class="data"><dt id="winsound.SND_LOOP"><span class="yiyi-st" id="yiyi-51"> <code class="descclassname">winsound.</code><code class="descname">SND_LOOP</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-52">反复播放声音。</span><span class="yiyi-st" id="yiyi-53">还必须使用<a class="reference internal" href="#winsound.SND_ASYNC" title="winsound.SND_ASYNC"><code class="xref py py-const docutils literal"><span class="pre">SND_ASYNC</span></code></a>标志来避免阻塞。</span><span class="yiyi-st" id="yiyi-54">不能与<a class="reference internal" href="#winsound.SND_MEMORY" title="winsound.SND_MEMORY"><code class="xref py py-const docutils literal"><span class="pre">SND_MEMORY</span></code></a>配合使用。</span></p></dd></dl><dl class="data"><dt id="winsound.SND_MEMORY"><span class="yiyi-st" id="yiyi-55"> <code class="descclassname">winsound.</code><code class="descname">SND_MEMORY</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-56"><a class="reference internal" href="#winsound.PlaySound" title="winsound.PlaySound"><code class="xref py py-func docutils literal"><span class="pre">PlaySound()</span></code></a><em>声音</em>参数是WAV文件的存储器映像作为字符串。</span></p><div class="admonition note"><p class="first admonition-title"><span class="yiyi-st" id="yiyi-57">注意</span></p><p class="last"><span class="yiyi-st" id="yiyi-58">此模块不支持异步播放内存映像,因此此标志和<a class="reference internal" href="#winsound.SND_ASYNC" title="winsound.SND_ASYNC"><code class="xref py py-const docutils literal"><span class="pre">SND_ASYNC</span></code></a>的组合将引发<a class="reference internal" href="exceptions.html#RuntimeError" title="RuntimeError"><code class="xref py py-exc docutils literal"><span class="pre">RuntimeError</span></code></a></span></p></div></dd></dl><dl class="data"><dt id="winsound.SND_PURGE"><span class="yiyi-st" id="yiyi-59"> <code class="descclassname">winsound.</code><code class="descname">SND_PURGE</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-60">停止播放指定声音的所有实例。</span></p><div class="admonition note"><p class="first admonition-title"><span class="yiyi-st" id="yiyi-61">注意</span></p><p class="last"><span class="yiyi-st" id="yiyi-62">在现代Windows平台上不支持此标志。</span></p></div></dd></dl><dl class="data"><dt id="winsound.SND_ASYNC"><span class="yiyi-st" id="yiyi-63"> <code class="descclassname">winsound.</code><code class="descname">SND_ASYNC</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-64">立即返回,允许声音异步播放。</span></p></dd></dl><dl class="data"><dt id="winsound.SND_NODEFAULT"><span class="yiyi-st" id="yiyi-65"> <code class="descclassname">winsound.</code><code class="descname">SND_NODEFAULT</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-66">如果无法找到指定的声音,请不要播放系统默认声音。</span></p></dd></dl><dl class="data"><dt id="winsound.SND_NOSTOP"><span class="yiyi-st" id="yiyi-67"> <code class="descclassname">winsound.</code><code class="descname">SND_NOSTOP</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-68">不要打断当前正在播放的声音。</span></p></dd></dl><dl class="data"><dt id="winsound.SND_NOWAIT"><span class="yiyi-st" id="yiyi-69"> <code class="descclassname">winsound.</code><code class="descname">SND_NOWAIT</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-70">如果声音驱动器忙,立即返回。</span></p><div class="admonition note"><p class="first admonition-title"><span class="yiyi-st" id="yiyi-71">注意</span></p><p class="last"><span class="yiyi-st" id="yiyi-72">在现代Windows平台上不支持此标志。</span></p></div></dd></dl><dl class="data"><dt id="winsound.MB_ICONASTERISK"><span class="yiyi-st" id="yiyi-73"> <code class="descclassname">winsound.</code><code class="descname">MB_ICONASTERISK</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-74">播放<code class="docutils literal"><span class="pre">SystemDefault</span></code>声音。</span></p></dd></dl><dl class="data"><dt id="winsound.MB_ICONEXCLAMATION"><span class="yiyi-st" id="yiyi-75"> <code class="descclassname">winsound.</code><code class="descname">MB_ICONEXCLAMATION</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-76">播放<code class="docutils literal"><span class="pre">SystemExclamation</span></code>声音。</span></p></dd></dl><dl class="data"><dt id="winsound.MB_ICONHAND"><span class="yiyi-st" id="yiyi-77"> <code class="descclassname">winsound.</code><code class="descname">MB_ICONHAND</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-78">播放<code class="docutils literal"><span class="pre">SystemHand</span></code>声音。</span></p></dd></dl><dl class="data"><dt id="winsound.MB_ICONQUESTION"><span class="yiyi-st" id="yiyi-79"> <code class="descclassname">winsound.</code><code class="descname">MB_ICONQUESTION</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-80">播放<code class="docutils literal"><span class="pre">SystemQuestion</span></code>声音。</span></p></dd></dl><dl class="data"><dt id="winsound.MB_OK"><span class="yiyi-st" id="yiyi-81"> <code class="descclassname">winsound.</code><code class="descname">MB_OK</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-82">播放<code class="docutils literal"><span class="pre">SystemDefault</span></code>声音。</span></p></dd></dl></div></div>