GUI analisis creados

parent 43e86f90
import tkinter as ttk
from tkinter import *
from tkinter import *
class VentanaAbout:
def __init__(self):
......@@ -12,4 +13,4 @@ class VentanaAbout:
lb2.place(x=60, y=50)
lb3 = ttk.Label(self.app, text="Juan Santos Poyato")
lb3.place(x=60, y=80)
self.app.mainloop()
\ No newline at end of file
self.app.mainloop()
......@@ -66,4 +66,4 @@ def estadisticasDuracionSesiones(registros):
malto = histograma[i]
moda = i
# Devuelvo todos los parametros
return histograma, media, moda, maxDur, minDur, desviacionTipica
return histograma, maxDur, minDur, moda, media, desviacionTipica
......@@ -10,7 +10,7 @@ def analisisTiempoMedioPorPagina(registros):
# Obtengo los id de las sesiones existentes
idsExistentes = getDistintasSesiones(reg)
# Obtengo las distintas paginas existentes
paginas = getDistintasPaginas()
paginas = getDistintasPaginas(registros)
# Creo una lista para guardar el tiempo medio que han pasado los usuarios en las paginas
tiempos = [] # El indice del vector tiempos es igual al indice vector paginas
max = -1
......
......@@ -3,7 +3,7 @@ from datetime import datetime
# Definimos la clase dato con: Host Remoto, fecha, metodo de petición, url, protocolo, etc...
class Dato:
#Constructor por defecto para instanciarlo en GUI (No tocar)
# Constructor por defecto para instanciarlo en GUI (No tocar)
def __init__(self, cadena):
# Atributos
self.Host_Remoto = None
......
UMBRAL_T=1#<<Parametrizar esto
UMBRAL_T = 1 # <<Parametrizar esto
def getFormatosFromCSV(cad):
if cad != "" and cad[len(cad)-1]!=';':
cad=cad+';'
ret=[]
c=0
aux=""
if cad != "" and cad[len(cad) - 1] != ';':
cad = cad + ';'
ret = []
c = 0
aux = ""
while c < len(cad):
if cad[c] == ';':
if aux[0]!='.':
aux='.'+aux
if aux[0] != '.':
aux = '.' + aux
ret.append(aux)
aux=""
aux = ""
else:
aux+=cad[c]
c+=1
aux += cad[c]
c += 1
return ret
def ordenarPorSesion(registros):
for i in range(len(registros)):
for j in range(len(registros)):
......
......@@ -7,13 +7,13 @@ from Filtros import eliminarComportamientoAutomatico
from AnalisisTMedioPagina import analisisTiempoMedioPorPagina
from AnalisisPaginasVisitadas import getEstadisticasPaginasVisitadas
RUTA_ARCHIVO = ""#"../access_log_Aug95_reducido"
RUTA_ARCHIVO = "" # "../access_log_Aug95_reducido"
E_SPIDERING = True
EXTENSIONES_ADMITIDAS = []
EXTENSIONES_NOADMITIDAS = []
UMBRAL_SESIONES = 1800
FACTOR_UMBRAL = 0.5
REG=[]
REG = []
'''
def printRegistro(registros):
......
......@@ -2,14 +2,17 @@ from tkinter import filedialog
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
from ObtencionRegistro import obtenerRegistros
from GuiEstadisticas import getEstadisticas
from GuiEstadisticas import estadisticasTMedioPag
from eliminarComportamientoAutomatico_GUI import FiltrarComportamientoAutomatico
from AnalisisPaginasVisitadas import getEstadisticasPaginasVisitadas
from AnalisisDuracionSesion import estadisticasDuracionSesiones
from Dato import Dato
from Filtros import getFormatosFromCSV
from VentanaAbrir import VentanaAbrir
from About_GUI import VentanaAbout
from Gestor import *
#r = obtenerRegistros(RUTA_ARCHIVO, E_SPIDERING, EXTENSIONES_ADMITIDAS, EXTENSIONES_NOADMITIDAS, UMBRAL_SESIONES)
def f_abrir():
global RUTA_ARCHIVO
......@@ -17,17 +20,17 @@ def f_abrir():
filetypes=(
("all files", "*.*"), ("txt files", "*.txt"), ("log files", "*.log")))
v=VentanaAbrir()
v = VentanaAbrir()
global EXTENSIONES_ADMITIDAS
EXTENSIONES_ADMITIDAS= getFormatosFromCSV(v.formadmin.get())
global EXTENSIONES_NOADMITIDAS
EXTENSIONES_ADMITIDAS = getFormatosFromCSV(v.formadmin.get())
global EXTENSIONES_NOADMITIDAS
EXTENSIONES_NOADMITIDAS = getFormatosFromCSV(v.formnoadmin.get())
global E_SPIDERING
E_SPIDERING=v.es!=0
E_SPIDERING = v.es != 0
global UMBRAL_SESIONES
try:
UMBRAL_SESIONES=int(float(v.umb.get()))
UMBRAL_SESIONES = int(float(v.umb.get()))
except:
UMBRAL_SESIONES = 1800
v.cerrarVentana()
......@@ -41,8 +44,43 @@ def f_abrir():
def f_salir():
quit()
def about():
v=VentanaAbout()
v = VentanaAbout()
def fDurSes():
global REG
if len(REG) > 0:
histograma, maxDur, minDur, moda, media, desviacionTipica = estadisticasDuracionSesiones(REG)
getEstadisticas(histograma, maxDur, minDur, moda, media, desviacionTipica)
def fPagVisit():
global REG
if len(REG) > 0:
histograma, maxDur, minDur, moda, media, desviacionTipica = getEstadisticasPaginasVisitadas(REG)
getEstadisticas(histograma, maxDur, minDur, moda, media, desviacionTipica)
def fTmPag():
global REG
if len(REG) > 0:
estadisticasTMedioPag(REG)
def fElimCAuto():
v = FiltrarComportamientoAutomatico()
global UMBRAL_T
try:
UMBRAL_T = float(v.formadmin.get())
except:
UMBRAL_T = 0.5
v.cerrarVentana()
global REG
if len(REG) > 0:
REG = eliminarComportamientoAutomatico(REG)
insertaRegistros()
def barraMenu(ventana):
......@@ -63,21 +101,30 @@ def barraMenu(ventana):
menu2 = Menu(barramenu)
barramenu.add_cascade(menu=menu2, label='Analisis')
# Boton Abrir
'''menu2.add_command(label='Abrir...',
command=f_abrir,
# Analisis aqui:
menu2.add_command(label='Duracion sesion',
command=fDurSes,
underline=0, compound=RIGHT)
menu2.add_command(label='Paginas visitadas', command=fPagVisit,
underline=0, compound=RIGHT)
menu2.add_command(label='Tiempo Medio Pagina', command=fTmPag,
underline=0, compound=RIGHT)
menu2.add_command(label='Eliminar comportamiento automático', command=fElimCAuto,
underline=0, compound=RIGHT)
menu2.add_separator() # Agrega un separador
# Boton Salir
menu2.add_command(label='Salir', command=f_salir,
underline=0, compound=RIGHT)'''
menu3 = Menu(barramenu)
barramenu.add_cascade(menu=menu3, label='Ayuda')
menu3.add_command(label='About...',
barramenu.add_cascade(menu=menu3, label='Cesta')
menu3.add_command(label='Generar cesta...',
command=about,
underline=0, compound=RIGHT)
menu4 = Menu(barramenu)
barramenu.add_cascade(menu=menu4, label='Ayuda')
menu4.add_command(label='About...',
command=about,
underline=0, compound=RIGHT)
def getDatosRegistro(registro, atributos):
ret = []
for a in atributos:
......@@ -89,6 +136,7 @@ def getDatosRegistro(registro, atributos):
aux.append(ret[0])
return aux
def insertaRegistros():
tabla.delete(*tabla.get_children())
global REG
......@@ -96,42 +144,38 @@ def insertaRegistros():
tabla.insert("", END, values=getDatosRegistro(r, atributos))
#Creo la ventana
ventana=Tk()
# Creo la ventana
ventana = Tk()
ventana.state('zoomed')
ventana.title("Analizador de Logs")
#Obtengo los atributos de la clase dato
atributos=Dato("").__dict__
nombresAtributos=[]
# Obtengo los atributos de la clase dato
atributos = Dato("").__dict__
nombresAtributos = []
for n in atributos:
nombresAtributos.append(n)
#Creo la tabla y relleno las cabeceras
tabla=ttk.Treeview(ventana,height=100,columns=[f"#{n}" for n in range(0, len(nombresAtributos))])
# Creo la tabla y relleno las cabeceras
tabla = ttk.Treeview(ventana, height=100, columns=[f"#{n}" for n in range(0, len(nombresAtributos))])
tabla.grid_propagate(True)
tabla.config(show='headings')
tabla.grid(row=0, column=0,sticky='ns')
c=0
tabla.grid(row=0, column=0, sticky='ns')
c = 0
ventana.update()
ancho=ventana.winfo_width()
ancho = ventana.winfo_width()
for i in nombresAtributos:
tabla.heading('#' + str(c) + '', text=i)
tabla.column('#' + str(c) + '', width=(ancho//len(nombresAtributos)), anchor=CENTER)
c+=1
tabla.column('#' + str(c) + '', width=(ancho // len(nombresAtributos)), anchor=CENTER)
c += 1
tabla.heading('#' + str(c) + '', text=nombresAtributos[0])
#Scrollbar
# Scrollbar
vsb = ttk.Scrollbar(ventana, orient="vertical", command=tabla.yview)
vsb.place(x=ancho-15, y=25, height=ventana.winfo_height()-35)
vsb.place(x=ancho - 15, y=25, height=ventana.winfo_height() - 35)
tabla.configure(yscrollcommand=vsb.set)
barraMenu(ventana)
ventana.mainloop()
\ No newline at end of file
ventana.mainloop()
import matplotlib.pyplot as plt
import numpy as np
from tkinter import messagebox
from AnalisisTMedioPagina import analisisTiempoMedioPorPagina
def getEstadisticas(histograma, max, min, moda, media, desviacionTipica):
l = []
for i in range(len(histograma)):
l.append(i)
arrayHisto = np.array(histograma)
arrayY = np.array(l)
plt.bar(arrayHisto, arrayY, align="center")
plt.title("Histograma")
plt.show()
cad = "Max:" + str(max) + " Min:" + str(min) + " Moda:" + str(moda) + " Media:" + str(
round(media, 2)) + " DV:" + str(round(desviacionTipica, 2))
messagebox.showinfo(message=cad, title="Estadisticas")
def estadisticasTMedioPag(reg):
paginas, tiempos, histograma = analisisTiempoMedioPorPagina(reg)
fig = plt.figure("Estadisticas")
g1 = fig.add_subplot(211)
g2 = fig.add_subplot(212)
tmp = np.array(tiempos)
g1.bar(paginas, tmp, align="center")
g1.set_xticks(paginas)
# g1.set_xtickslabels(paginas)
g1.set_ylabel("Tiempo Medio")
l = []
for i in range(len(histograma)):
l.append(i)
arrayHisto = np.array(histograma)
arrayY = np.array(l)
g2.bar(arrayHisto, arrayY, align="center")
g2.set_ylabel("Histograma")
plt.show()
import tkinter as ttk
from tkinter import *
from tkinter import *
class VentanaAbrir:
def __init__(self):
self.es=IntVar()
self.es = IntVar()
self.app = Tk()
self.app.title("Abrir...")
self.app.geometry('450x200')
checkb = ttk.Checkbutton(self.app, text="eSpidering",variable=self.es,onvalue=1,offvalue=0)
checkb = ttk.Checkbutton(self.app, text="eSpidering", variable=self.es, onvalue=1, offvalue=0)
checkb.place(x=40, y=30)
self.lb1 = ttk.Label(self.app, text="Formatos admitidos (separar con ;):")
self.lb1.place(x=40, y=60)
......@@ -25,7 +26,6 @@ class VentanaAbrir:
self.boton = ttk.Button(self.app, text="Aceptar", command=self.app.quit)
self.boton.place(x=150, y=160)
self.app.mainloop()
print("destruido...")
def cerrarVentana(self):
self.app.destroy()
\ No newline at end of file
self.app.destroy()
import tkinter as ttk
from tkinter import *
class FiltrarComportamientoAutomatico:
def __init__(self):
self.app = Tk()
self.app.title("Eliminar comportamiento automatico")
self.app.geometry('650x100')
lb1 = ttk.Label(self.app, text="Considerar comportamiento automatico con un tiempo medio por pagina menor a: ")
lb1.place(x=40, y=30)
self.formadmin = ttk.Entry(self.app)
self.formadmin.place(x=500, y=30)
self.boton = ttk.Button(self.app, text="Aceptar", command=self.app.quit)
self.boton.place(x=40, y=60)
self.app.mainloop()
def cerrarVentana(self):
self.app.destroy()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment