gh-131453: Add additional constants to winsound module (GH-131454)

This commit is contained in:
AN Long 2025-03-21 01:35:52 +09:00 committed by GitHub
parent a2ea417578
commit 00a9844888
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 81 additions and 1 deletions

View file

@ -142,6 +142,27 @@ provided by Windows platforms. It includes functions and several constants.
to specify an application-defined sound alias.
.. data:: SND_SENTRY
Triggers a SoundSentry event when the sound is played.
.. versionadded:: 3.14
.. data:: SND_SYNC
The sound is played synchronously. This is the default behavior.
.. versionadded:: 3.14
.. data:: SND_SYSTEM
Assign the sound to the audio session for system notification sounds.
.. versionadded:: 3.14
.. data:: MB_ICONASTERISK
Play the ``SystemDefault`` sound.
@ -166,3 +187,30 @@ provided by Windows platforms. It includes functions and several constants.
Play the ``SystemDefault`` sound.
.. data:: MB_ICONERROR
Play the ``SystemHand`` sound.
.. versionadded:: 3.14
.. data:: MB_ICONINFORMATION
Play the ``SystemDefault`` sound.
.. versionadded:: 3.14
.. data:: MB_ICONSTOP
Play the ``SystemHand`` sound.
.. versionadded:: 3.14
.. data:: MB_ICONWARNING
Play the ``SystemExclamation`` sound.
.. versionadded:: 3.14

View file

@ -82,6 +82,18 @@ class MessageBeepTest(unittest.TestCase):
def test_question(self):
safe_MessageBeep(winsound.MB_ICONQUESTION)
def test_error(self):
safe_MessageBeep(winsound.MB_ICONERROR)
def test_information(self):
safe_MessageBeep(winsound.MB_ICONINFORMATION)
def test_stop(self):
safe_MessageBeep(winsound.MB_ICONSTOP)
def test_warning(self):
safe_MessageBeep(winsound.MB_ICONWARNING)
def test_keyword_args(self):
safe_MessageBeep(type=winsound.MB_OK)
@ -161,6 +173,15 @@ class PlaySoundTest(unittest.TestCase):
# does not raise on systems without a sound card.
winsound.PlaySound(None, winsound.SND_PURGE)
def test_sound_sentry(self):
safe_PlaySound("SystemExit", winsound.SND_ALIAS | winsound.SND_SENTRY)
def test_sound_sync(self):
safe_PlaySound("SystemExit", winsound.SND_ALIAS | winsound.SND_SYNC)
def test_sound_system(self):
safe_PlaySound("SystemExit", winsound.SND_ALIAS | winsound.SND_SYSTEM)
if __name__ == "__main__":
unittest.main()

View file

@ -0,0 +1 @@
Some :data:`!SND_*` and :data:`!MB_*` constants are added to :mod:`winsound`.

View file

@ -56,7 +56,10 @@ PyDoc_STRVAR(sound_module_doc,
"SND_NODEFAULT - Do not play a default beep if the sound can not be found\n"
"SND_NOSTOP - Do not interrupt any sounds currently playing\n" // Raising RuntimeError if needed
"SND_NOWAIT - Return immediately if the sound driver is busy\n" // Without any errors
"SND_APPLICATION - sound is an application-specific alias in the registry."
"SND_APPLICATION - sound is an application-specific alias in the registry.\n"
"SND_SENTRY - Triggers a SoundSentry event when the sound is played.\n"
"SND_SYNC - Play the sound synchronously, default behavior.\n"
"SND_SYSTEM - Assign sound to the audio session for system notification sounds.\n"
"\n"
"Beep(frequency, duration) - Make a beep through the PC speaker.\n"
"MessageBeep(type) - Call Windows MessageBeep.");
@ -232,12 +235,19 @@ exec_module(PyObject *module)
ADD_DEFINE(SND_PURGE);
ADD_DEFINE(SND_LOOP);
ADD_DEFINE(SND_APPLICATION);
ADD_DEFINE(SND_SENTRY);
ADD_DEFINE(SND_SYNC);
ADD_DEFINE(SND_SYSTEM);
ADD_DEFINE(MB_OK);
ADD_DEFINE(MB_ICONASTERISK);
ADD_DEFINE(MB_ICONEXCLAMATION);
ADD_DEFINE(MB_ICONHAND);
ADD_DEFINE(MB_ICONQUESTION);
ADD_DEFINE(MB_ICONERROR);
ADD_DEFINE(MB_ICONINFORMATION);
ADD_DEFINE(MB_ICONSTOP);
ADD_DEFINE(MB_ICONWARNING);
#undef ADD_DEFINE