带输入的功能不打印任何内容

时间:2017-07-31 06:28:13

标签: python pygame piano music-notation

好的,所以我试图让z.ExNote()将图片(第8个音符)打印到我正在构建的应用的乐谱页面上。基本上每个变量都与要放置音符的位置的(x,y)坐标有关。 .ExNote()是类Note中的一个函数,它将Note对象(Num, staff, measure, note, notetype)的5个变量转换为要放置的图像的x,y坐标。这整个过程会为你处理4个变量,所以你理论上可以输入音符c,d,e,f,g,a,b,它会在乐谱的开头打印出来,然后你输入的下一个音符将是下一个恰好是的位置。右边17个像素,依此类推。

StaffL = {0: 'nada', 1: '1R', 2: '1L', 3:'2R',
      4: '2L', 5: '3R', 6: '3L', 7: '4R', 8: '4L'}

pygame.display.set_caption("Piano App")

done = False
clock = pygame.time.Clock()

while not done:

    clock.tick(10)

    for event in pygame.event.get(): 
        if event.type == pygame.QUIT: 
            done=True  



screen.fill(white)
DrawGrandStaffAll()
TS(4,4)
notetypeZ = 'Ethnote'
g=0
while g < 8:
    g+=1
    staff = StaffL[g]
    measureZ = 0
    while measureZ<6:
        measureZ += 1
        wnoteZ = 0
        while wnoteZ<8:
            wnoteZ += 1
            noteZ=(input("\n\nWhat note \nc\nd\ne\nf\ng\na\nb\nc2\nd2\n"))
            z = Note(int(wnoteZ), repr(staff), int(measureZ), repr(noteZ), repr(notetypeZ))
            z.ExNote()
            pygame.display.flip()
pygame.quit()

如果我只输入z最终等于(Note(1, '1R', 1, 'c', 'Ethnote'))然后执行z.Exnote(),那么它可以正常工作(我的笔记打印在乐谱上)。但是,当我这样做时,它不起作用。我还在一个单独的窗口中运行此代码并打印出z,以确保它不是一些技术错误/错误输出,输出正是我想要的。所以问题不在于变量,也不是一些技术错误。我假设错误与输入有关,因为这是在手动输入z=Note(1, '1R', 1, 'c', 'Ethnote')和使用此代码构建语句之间唯一的变化。

1 个答案:

答案 0 :(得分:0)

您使用的是Python 2还是3.如果使用Python 2,input()会尝试评估您键入的表达式。我相信你想要的raw_input()返回字符串。