我希望我的程序按照以下方式执行:
此程序正在运行时:
如果按下public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteStartArray();
var points = (List<Point>)value;
if (points.Any())
{
var converter = new PointConverter();
foreach (var point in points)
{
converter.WriteJson(writer, point.Coordinates, serializer);
}
}
writer.WriteEndArray();
}
键,则停止播放当前音乐文件。
这是我的代码:
Enter
在文档中(请参阅我的代码第一行中的链接),我不确定天气# https://docs.python.org/2/library/winsound.html
from msvcrt import getch
import winsound
while True:
key = ord(getch())
if key == 13:
winsound.PlaySound(None, winsound.SND_NOWAIT)
winsound.PlaySound("SystemAsterisk", winsound.SND_ALIAS)
winsound.PlaySound("SystemExclamation", winsound.SND_ALIAS)
winsound.PlaySound("SystemExit", winsound.SND_ALIAS)
winsound.PlaySound("SystemHand", winsound.SND_ALIAS)
winsound.PlaySound("SystemQuestion", winsound.SND_ALIAS)
winsound.MessageBeep()
winsound.PlaySound('C:/Users/Admin/My Documents/tone.wav', winsound.SND_FILENAME)
winsound.PlaySound("SystemAsterisk", winsound.SND_ALIAS)
可以像这样使用:winsound.SND_NOWAIT
,或者就像我在代码中尝试使用它一样在winsound.SND_NOWAIT()
声明下,或两个声明都产生相同的效果。
我的理解是,在我按下if
按钮之前,程序永远不会播放声音文件,因为Enter
部分需要才能继续播放。< / p>
但是,即使代码的那部分不关心 时我按了什么,程序也不会卡在getch()
循环中?
答案 0 :(得分:0)
winsound.SND_NOWAIT
的链接文档指出:
注意:现代Windows平台不支持此标志。
除此之外,我不认为你理解getch()
是如何运作的。这是其文档的链接:
https://msdn.microsoft.com/en-us/library/078sfkak
以下是另一个名为kbhit()
的相关内容(msvcrt
也包含,我在下面使用):
https://msdn.microsoft.com/en-us/library/58w7c94c.aspx
当按下 Enter 键时,以下将停止循环(和程序,因为这是其中唯一的东西)。请注意,它不会中断任何已播放的单个声音,因为winsound
没有提供这样做的方法,但它会阻止任何其他声音播放。
from msvcrt import getch, kbhit
import winsound
class StopPlaying(Exception): pass # custom exception
def check_keyboard():
while kbhit():
ch = getch()
if ch in '\x00\xe0': # arrow or function key prefix?
ch = getch() # second call returns the actual key code
if ord(ch) == 13: # <Enter> key?
raise StopPlaying
def play_sound(name, flags=winsound.SND_ALIAS):
winsound.PlaySound(name, flags)
check_keyboard()
try:
while True:
play_sound("SystemAsterisk")
play_sound("SystemExclamation")
play_sound("SystemExit")
play_sound("SystemHand")
play_sound("SystemQuestion")
winsound.MessageBeep()
play_sound('C:/Users/Admin/My Documents/tone.wav', winsound.SND_FILENAME)
play_sound("SystemAsterisk")
except StopPlaying:
print('Enter key pressed')