mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-06-08 15:04:05 +08:00
8 lines
14 KiB
HTML
8 lines
14 KiB
HTML
<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> |