1
1
import tkinter
2
2
from logica import Arduino
3
3
from Ventanas import Ventana
4
+ from statistics import mode , median , mean
4
5
5
6
class Conectado_datos :
6
7
7
- Estadistica : bool = False
8
-
9
8
def __init__ (self , pantalla : Ventana , Dispostivo : Arduino , caja : tkinter .Listbox ) -> None :
10
9
self .pantalla : tkinter .Tk = pantalla .mostrar_ventana ()
11
10
self .dispositivo : Arduino = Dispostivo
@@ -18,6 +17,8 @@ def __init__(self, pantalla: Ventana, Dispostivo: Arduino, caja: tkinter.Listbox
18
17
self .listas : list = []
19
18
self .altura : float = 0
20
19
self .peso : float = 0
20
+ self .Datos_Arduino_final : bool = True
21
+ self .Estadistica : bool = True
21
22
22
23
def etiquetas (self ) -> None :
23
24
self .ventanas .etiqueta_titulo_movible_main (
@@ -41,6 +42,7 @@ def opciones(self) -> None:
41
42
self .obtener_datos ()
42
43
self .estadistica ()
43
44
self .celdad_carga ()
45
+ self .cerrar_all ()
44
46
45
47
def ingrear_peso (self ) -> None :
46
48
boton = tkinter .Button (self .pantalla , text = "Ing. Peso" , command = lambda : self .__desactivar ("peso" ))
@@ -57,48 +59,72 @@ def obtener_datos(self) -> None:
57
59
boton .place (relx = 0.86 , rely = 0.41 )
58
60
59
61
def __pedir_datos (self ) -> None :
60
- if not self .Estadistica :
62
+ if self .Datos_Arduino_final :
61
63
self .dispositivo .data .clear ()
62
64
self .dispositivo .escribir_datos ("[true/6]" )
63
- self .pantalla .after (1400 , self .__data_arduino )
64
- self .caja .insert (tkinter .END , "Datos cargados desde el arduino" )
65
+ self .caja .insert (tkinter .END , "Datos cargados desde el arduino" )
66
+ else :
67
+ self .caja .insert (tkinter .END , "Datos Recuperados" )
68
+ self .pantalla .after (1400 , self .__data_arduino )
65
69
66
70
def __data_arduino (self ) -> None :
67
- if (len (self .dispositivo .data ) != 0 ):
68
- for item in self .dispositivo .data :
69
- self .listas .append (item )
70
- dictionary :dict = {
71
- "Tara" : self .listas [0 ],
72
- "Peso Total" : self .listas [1 ],
73
- "Radio llave" : self .listas [2 ],
74
- "Suma Valores" : self .listas [3 ],
75
- "Caudal Total" : self .listas [4 ],
76
- "Altura Maxima" : self .listas [5 ]
77
- }
78
- self .dispositivo .limpiar ()
79
- else :
80
- print ("Sin datos" )
71
+ aux16 : dict = self .dispositivo .recolectar_datos (self .Datos_Arduino_final )
72
+ self .Datos_Arduino_final = False
73
+ for key , value in aux16 .items ():
74
+ self .caja .insert (tkinter .END , f"{ key } : { value } " )
81
75
82
76
def estadistica (self ) -> None :
83
77
boton = tkinter .Button (
84
78
self .pantalla , text = "Estadistica" , command = self .conseguir )
85
79
boton .place (relx = 0.843 , rely = 0.48 )
86
80
87
81
def conseguir (self ) -> None :
88
- if not self .Estadistica :
89
- self .dispositivo .data .clear ()
82
+ if self .Estadistica :
90
83
self .dispositivo .escribir_datos ("[true/3]" )
91
- self .pantalla .after (2500 , self .datos_dias )
84
+ self .pantalla .after (2500 , self .datos_dias )
92
85
self .caja .insert (tkinter .END , "Datos en litros de la cantidad de jugo de caña de los ultimos 30 días" )
86
+ Estadistica_x2 : tkinter .Toplevel = tkinter .Toplevel (background = "#2a8d90" )
87
+ Estadistica_x2 .title ("Estadistica" )
88
+ Estadistica_x2 .geometry ("380x180" )
89
+ Estadistica_x2 .resizable (False , False )
90
+ #Etiqueta:
91
+ self .ventanas .etiqueta_titulo (Estadistica_x2 ,"Medidas de Tendencia Central" )
92
+ #Botones:
93
+ boton1 = tkinter .Button (Estadistica_x2 , text = "Mediana" , command = self .mediana )
94
+ boton1 .place (relx = 0.1 , rely = 0.5 )
95
+ boton2 = tkinter .Button (Estadistica_x2 , text = "Media" , command = self .media_ardu )
96
+ boton2 .place (relx = 0.3 , rely = 0.5 )
97
+ boton3 = tkinter .Button (Estadistica_x2 , text = "Moda" , command = self .moda )
98
+ boton3 .place (relx = 0.5 , rely = 0.5 )
99
+ boton4 = tkinter .Button (Estadistica_x2 , text = "Imprimir datos" , command = self .imprimir_datos_dias )
100
+ boton4 .place (relx = 0.7 , rely = 0.5 )
101
+
102
+ def media_ardu (self ) -> None :
103
+ aux : float = mean (self .dispositivo .Datos_estadisticos )
104
+ self .caja .insert (tkinter .END , f"La mediana de los datos: { aux } " )
105
+
106
+ def moda (self ) -> None :
107
+ aux : float = mode (self .dispositivo .Datos_estadisticos )
108
+ self .caja .insert (tkinter .END , f"La moda de los datos es: { aux } " )
109
+
110
+ def mediana (self ) -> None :
111
+ aux : float = median (self .dispositivo .Datos_estadisticos )
112
+ self .caja .insert (tkinter .END , f"La mediana de los datos es: { aux } " )
113
+
114
+ def imprimir_datos_dias (self ) -> None :
115
+ self .caja .insert (tkinter .END , f"Los datos de los dias son: " )
116
+ for indx , item in enumerate (self .dispositivo .Datos_estadisticos , start = 1 ):
117
+ self .caja .insert (tkinter .END , f"Día { indx } : { item } " )
93
118
94
119
def datos_dias (self ) -> None :
95
- if (len (self .dispositivo .data ) != 0 ):
96
- for item in self .dispositivo .data :
97
- self .datos .append (item )
98
- print (item )
99
- self .dispositivo .limpiar ()
120
+ if self .dispositivo .datos_estadisticos_ard (self .Estadistica ):
121
+ self .caja .insert (tkinter .END , "Dato recividos correctamente" )
122
+ self .Estadistica = False
100
123
else :
101
- print ("Sin_datos" )
124
+ if not self .Estadistica :
125
+ self .caja .insert (tkinter .END , "Dato ya pedidos" )
126
+ else :
127
+ self .caja .insert (tkinter .END , "Error en el recivimiento de los datos" )
102
128
103
129
def celdad_carga (self ) -> None :
104
130
boton = tkinter .Button (
@@ -136,11 +162,25 @@ def __guardar_cambios(self) -> None:
136
162
elif self .__var == "altura" :
137
163
aux = "[{0}/7]" .format (self .altura )
138
164
self .dispositivo .escribir_datos (aux )
139
- self .peso = 0
140
- self .altura = 0
165
+ self .Datos_Arduino_final = True
141
166
self .etiqueta .delete (0 , 'end' )
142
- self .dispositivo .limpiar ()
143
167
self .__abilitar ()
168
+ self .pantalla .after (1200 , self .confirmar_datos_arduino )
169
+
170
+ def confirmar_datos_arduino (self ):
171
+ if self .__var == "peso" :
172
+ if self .dispositivo .conection (str (self .peso )):
173
+ self .caja .insert (tkinter .END , "Dato enviado correctamente" )
174
+ else :
175
+ self .caja .insert (tkinter .END , "Error enviando dato" )
176
+ elif self .__var == "altura" :
177
+ if self .dispositivo .conection (str (self .altura )):
178
+ self .caja .insert (tkinter .END , "Dato enviado correctamente" )
179
+ else :
180
+ self .caja .insert (tkinter .END , "Error enviando dato" )
181
+ self .peso = 0
182
+ self .altura = 0
183
+ self .__var = ""
144
184
145
185
def descartar (self ) -> None :
146
186
boton = tkinter .Button (
@@ -226,5 +266,13 @@ def __config_Altura(self) -> None:
226
266
elif widget .config ('text' )[- 1 ] == "Descartar" :
227
267
widget .configure (state = "active" )
228
268
self .__var = "altura"
269
+
270
+ def cerrar_all (self ) -> None :
271
+ self .pantalla .protocol ("WM_DELETE_WINDOW" , self .cerrar_principal )
229
272
230
-
273
+ def cerrar_principal (self ) -> None :
274
+ self .dispositivo .escribir_datos ("[false/5]" )
275
+ self .pantalla .after (1000 , self .terminado )
276
+
277
+ def terminado (self ) -> None :
278
+ self .pantalla .destroy ()
0 commit comments