我试图基于一个事件,midi输入在pygame窗口中blit图像,然后根据下一个事件另一个midi输入blit另一个图像。这里发生的是当我按下midi键盘上的一个键时,图像弹出一秒钟。我需要它留在窗口,即使我输入另一个输入并blit另一个图像。这会发生的事情是我的midi键盘上的每个键都被记录为一个数字(1-88)并添加到NoteList[]
然后使用h
在NoteList
窗口中的图像是blit,h
中的一个项目1}}作为x坐标。在我的实际pygame中,going = True
while going:
screen.fill(white)
events = event_get()
NoteList=[]
for e in events:
if e.type in [QUIT]:
going = False
if e.type in [KEYDOWN]:
going = False
events = pygame.event.get()
if e.type in [pygame.midi.MIDIIN]:
print(str(e.data1))
NoteList.append(int(e.data1-20))
for h in NoteList:
screen.blit(EthnoteIMG, (int(h), 100))
pygame.display.update()
变量也将经历一系列函数,我只是想在一个更简单的pygame窗口中找出这个部分。
{}
答案 0 :(得分:0)
我相信问题是,每次while循环运行时你都会填满屏幕,但是当事件发生时你只是在屏幕上显示那个图像......
试试这个:
screen.fill(white)
going = True
while going:
events = event_get()
NoteList=[]
for e in events:
if e.type in [QUIT]:
going = False
if e.type in [KEYDOWN]:
going = False
events = pygame.event.get()
if e.type in [pygame.midi.MIDIIN]:
print(str(e.data1))
NoteList.append(int(e.data1-20))
for h in NoteList:
screen.fill(white)
screen.blit(EthnoteIMG, (int(h), 100))
pygame.display.update()
答案 1 :(得分:0)
如果注释应该保留,则需要在while循环之外定义NoteList
,否则每次迭代都会创建一个新的空列表。
NoteList = []
going = True
while going:
for e in pygame.event.get():
if e.type == pygame.QUIT:
going = False
elif e.type == pygame.midi.MIDIIN:
print(str(e.data1))
NoteList.append(int(e.data1-20))
screen.fill(white)
for h in NoteList:
screen.blit(EthnoteIMG, (int(h), 100))
pygame.display.update()
您可以使用enumerate
功能移动位置:
for g, h in enumerate(NoteList):
screen.blit(EthnoteIMG, (g*12, int(h)))