Guest User

https://www.reddit.com/r/PythonEspanol/comments/vz4o73/ayuda_con_botones_en_tkinter/

a guest
Jul 15th, 2022
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.79 KB | None | 0 0
  1. import tkinter
  2. import numpy as np
  3. import sounddevice as sd
  4.  
  5. notas={1:"C",2:"C#",3:"D",4:"D#",5:"E",6:"F",7:"F#",8:"G",9:"G#",10:"A",11:"A#",12:"B"}
  6. octava=0
  7. valornota=0
  8.  
  9. def valor_nota(a):
  10.     global valornota
  11.     for i in range(1,13):
  12.         if notas[i]==a:
  13.             valornota=i
  14.  
  15. def textodelacaja():
  16.     global octava
  17.     octava=int(Cajaoctava.get())
  18.  
  19. def frecuencia(nota, octava):
  20.     ex=(octava-4)*12+(nota-10)
  21.     return 440*(((2)**(1/12))**ex)
  22.  
  23. def rep_nota(nota, octava):
  24.     framerate=44100
  25.     tiempo=3000
  26.     frec=frecuencia(nota, octava)
  27.     t=np.linspace(0, tiempo/1000, int(framerate*tiempo/1000))
  28.     onda=np.sin(2*np.pi * frec * t)
  29.     sd.play(onda, framerate)
  30.     print("la nota es:", valornota, "y la octava es", octava) #para ver la asignación
  31.  
  32. ventana=tkinter.Tk()
  33.  
  34. ventana.title("Diapasón")
  35.  
  36. seleccionarnota=tkinter.Label(ventana, text="Selecciona la nota:")
  37. seleccionarnota.grid(row=0, column=0, columnspan=6)
  38.  
  39. botonC=tkinter.Button(ventana, text="C", command=lambda: valor_nota("C"))
  40. botonC.grid(row=1, column=0)
  41. botonCs=tkinter.Button(ventana, text="C#", command=lambda: valor_nota("C#"))
  42. botonCs.grid(row=1, column=1)
  43. botonD=tkinter.Button(ventana, text="D", command=lambda: valor_nota("D"))
  44. botonD.grid(row=1, column=2)
  45. botonDs=tkinter.Button(ventana, text="D#", command=lambda: valor_nota("D#"))
  46. botonDs.grid(row=1, column=3)
  47. botonE=tkinter.Button(ventana, text="E", command=lambda: valor_nota("E"))
  48. botonE.grid(row=1, column=4)
  49. botonF=tkinter.Button(ventana, text="F", command=lambda: valor_nota("F"))
  50. botonF.grid(row=1, column=5)
  51. botonFs=tkinter.Button(ventana, text="F#", command=lambda: valor_nota("F#"))
  52. botonFs.grid(row=2, column=0)
  53. botonG=tkinter.Button(ventana, text="G", command=lambda: valor_nota("G"))
  54. botonG.grid(row=2, column=1)
  55. botonGs=tkinter.Button(ventana, text="G#", command=lambda: valor_nota("G#"))
  56. botonGs.grid(row=2, column=2)
  57. botonA=tkinter.Button(ventana, text="A", command=lambda: valor_nota("A"))
  58. botonA.grid(row=2, column=3)
  59. botonAs=tkinter.Button(ventana, text="A#", command=lambda: valor_nota("A#"))
  60. botonAs.grid(row=2, column=4)
  61. botonB=tkinter.Button(ventana, text="B", command=lambda: valor_nota("B"))
  62. botonB.grid(row=2, column=5)
  63.  
  64. ingresaroctava=tkinter.Label(ventana, text="Ingresa la octava deseada:")
  65. ingresaroctava.grid(row=3, column=0, columnspan=6)
  66.  
  67. Cajaoctava=tkinter.Entry(ventana, font="Helvetica 20")
  68. Cajaoctava.grid(row=4, column=0, columnspan=6)
  69.  
  70. botoncaja=tkinter.Button(ventana, text="Clic", command=textodelacaja)
  71. botoncaja.grid(row=5, column=5)
  72.  
  73. botonrepro=tkinter.Button(ventana, text="Reproducir", command=lambda: rep_nota(valornota, octava))
  74. botonrepro.grid(row=6, column=5)
  75.  
  76.  
  77. #boton_rep=tkinter.Button(ventana, text="A4-440Hz", command=lambda: rep_nota(10,4))
  78. #boton_rep.pack()
  79.  
  80. ventana.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment