
from tkinter import *
from tkinter import ttk
import tkinter as tk
from tkinter import ttk
from tkinter import Menu
from tkinter import messagebox
import webbrowser
from numpy import * 

#To create an UI in Python using TKinter
window = Tk()
window.tk.call('tk', 'scaling', 1.6)
window.title("Audio Test File Generator")
tab_control = ttk.Notebook(window)
tab8 = ttk.Frame(tab_control)
tab_control.add(tab8, text='Audio Test File Generator')
lbl8 = Label(tab8, text= 'label8')
lbl8.grid(column=0, row=0)
tab_control.pack(expand=1, fill='both')

def _click_mee20a():
        import pyaudio
        import numpy as np

        p = pyaudio.PyAudio()

        fs = 44100   # The Sampling frequency (Hz.)
        duration = 5   #Duration of Audio file (Sec.)
        f = namecol10ma.get()   #The frequency of the sinusoidal signal (Hz)
        volume =  0.01*round(namecol11ma.get()) #The Amplitude of the sinusoidal signal (Hz)

        samples = (np.sin(2*np.pi*np.arange(fs*duration)*f/fs)).astype(np.float32)  #Sin. Signal

        stream = p.open(format=pyaudio.paFloat32,
                channels=1,
                rate=fs,
                output=True)
        stream.write((volume*samples).tobytes())

        stream.stop_stream()
        stream.close()

        p.terminate()
mightyyt8 = ttk.LabelFrame(tab8, text=' Audio Test File Generator ')
mightyyt8.grid(column=0, row=0, padx=8, pady=4)
action1a = ttk.Button(mightyyt8, text='Start', command=_click_mee20a)
action1a.grid(column=1, row=9 , padx=10, pady=10)    

a_label21ma = ttk.Label(mightyyt8, text='The Frequency of Signal:')
a_label21ma.grid(column=0, row=5, sticky='W' , padx=10, pady=10)
namecol10ma = tk.DoubleVar()
name_entered30a = ttk.Entry(mightyyt8, width=15, textvariable=namecol10ma)
namecol10ma.set(1000)
name_entered30a.grid(column=1, row=5, sticky='W' , padx=10, pady=10)
a_label22ma = ttk.Label(mightyyt8, text='Amplitude of Signal (%):')
a_label22ma.grid(column=0, row=6, sticky='W' , padx=10, pady=10)
namecol11ma = tk.DoubleVar()
name_entered40a = ttk.Entry(mightyyt8, width=15, textvariable=namecol11ma)
namecol11ma.set(100)
name_entered40a.grid(column=1, row=6, sticky='W' , padx=10, pady=10)

def _quit():
	window.quit()
	window.destroy()
	exit()

menu_bar = Menu(window)
window.configure(menu=menu_bar)
file_menu = Menu(menu_bar, tearoff=0)
file_menu.add_separator()
file_menu.add_command(label='Exit', command=_quit)
menu_bar.add_cascade(label='File', menu=file_menu)

def _msgBox():
        webbrowser.open_new('Mahdi.pdf')
def _loadf2():
        msg = messagebox.showinfo( "About", "SDU, Mahdi")
help_menu = Menu(menu_bar, tearoff=0)
help_menu.add_command(label='Help', command=_msgBox)
help_menu.add_separator()
help_menu.add_command(label='About', command=_loadf2)
menu_bar.add_cascade(label='Help', menu=help_menu)
window.mainloop()