Python - introducir datos en una interfaz (Tkinter) y que los grafique en la propia ventana

 
Vista:

introducir datos en una interfaz (Tkinter) y que los grafique en la propia ventana

Publicado por Daniel (2 intervenciones) el 06/11/2019 23:21:54
Buenas!!

Estoy haciendo una interfaz gráfica en Tkinter de temática analítica. La cosa es meterle unos valores en unos Entry labels y luego hacer cosas con ellos a través de un botón que llama a una función "Analizar" que se encarga de hacer el análisis.

Me gustaría que sacase un grafico en tarta de los valores que le introduzco en los entrys, básicamente los sumo todos y luego divido cada uno entre la suma total, así saco los porcentajes para el gráfico en tarta.
Luego no se como hacer para que me los grafique dentro de la propia ventana cuando le doy al botón "Analizar".

¿Es posible hacer eso? ¿Alguna idea de como hacerlo? ¿Hay alguna otra librería mejor que Tkinter para hacer esto?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

introducir datos en una interfaz (Tkinter) y que los grafique en la propia ventana

Publicado por tincopasan (1082 intervenciones) el 07/11/2019 03:12:10
para graficar podés usar matplotlib.
no hay forma de adivinar como estás implementando el código que has hecho.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

introducir datos en una interfaz (Tkinter) y que los grafique en la propia ventana

Publicado por Daniel (2 intervenciones) el 07/11/2019 08:07:23
Tienes razón, no se en que estaría pensando, no puse el código jeje. Este es el código, a partir de aquí no tengo muy claro como hacerlo. No se si dentro de la función o bien dentro del mainloop.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
raiz = Tk()
raiz.geometry('1200x600')
 
frame = Frame(raiz, width=1000, height=500)
frame.pack()
 
media = StringVar()
var = StringVar()
 
 
 
def destroy():
    return raiz.destroy()
 
def analisis():
 
    x_1 = float(ventana2.get())
    x_2 = float(ventana4.get())
    x_3 = float(ventana6.get())
    x_4 = float(ventana8.get())
    x_5 = float(ventana10.get())
    x_6 = float(ventana12.get())
 
    datos = np.array([x_1, x_2, x_3, x_4, x_5, x_6])
 
    m = datos.mean()
    v = datos.std()
 
    # Creamos grafico
    ax = lab.axes([1, 1, 1.6, 1.6])# donde esta la figura ancho alto etc..
#----------------------------------------------------------------------
    labels = 'X_1', 'X_2', 'X_3', 'X_4 ', 'X_5', 'X_6'#nombre de los datos
    fracs = datos/datos.sum() #datos a graficar
    explode=(0, 0, 0, 0.1, 0, 0)
 
    lab.pie(fracs, explode=explode, labels=labels, autopct='%10.0f%%', shadow=True)
    lab.legend()
    lab.title('Grafico en tarta', bbox={'facecolor':'0.8', 'pad':5})
 
    lab.savefig("grafico.png", bbox_inches = 'tight') #guardamos la figura en formato .png
 
 
    return  media.set(m), var.set(v)
 
#--------------------------pregunta1--------------------------------------------------#
ventana1 = Label(frame, text="X_1:", width=17)
ventana1.grid(row=0, column=0)
ventana2 = Entry(frame, width=17)
ventana2.grid(row=0, column=1)
#------------------------------pregunta2---------------------------------------#
ventana3 = Label(frame,text="X_2:",width=17)
ventana3.grid(row=1, column=0)
ventana4 = Entry(frame, width=17)
ventana4.grid(row=1, column=1)
#------------------------------pregunta3---------------------------------------#
ventana5 = Label(frame,text="X_3:",width=17)
ventana5.grid(row=2, column=0)
ventana6 = Entry(frame, width=17)
ventana6.grid(row=2, column=1)
#------------------------------pregunta4---------------------------------------#
ventana7 = Label(frame,text="X_4:",width=17)
ventana7.grid(row=3, column=0)
ventana8 = Entry(frame, width=17)
ventana8.grid(row=3, column=1)
#------------------------------pregunta5---------------------------------------#
ventana9 = Label(frame,text="X_5:",width=17)
ventana9.grid(row=4, column=0)
ventana10 = Entry(frame, width=17)
ventana10.grid(row=4, column=1)
#------------------------------pregunta6---------------------------------------#
ventana11 = Label(frame,text="X_6:",width=17)
ventana11.grid(row=5, column=0)
ventana12 = Entry(frame, width=17)
ventana12.grid(row=5, column=1)
 
 
#--------------------------------Boton Analisis-------------------------------------------#
boton = Button(frame, text="Analisis", command=analisis, width=17)
boton.grid(row=10, column=1)
 
#-------------------------------Boton de salir----------------------------------------------#
boton = Button(frame, text="salir", command=destroy, width=17)
boton.grid(row=10, column=2)
#------------------------------------------------------------------------------------#
 
 
#---------------------------------VENTANA MEDIA------------------------#
ventana13 = Label(frame, text="MEDIA", bg="pink")
ventana13.grid(row=6, column=1)
ventana14 = Label(frame, textvariable=media, bg="yellow", width=17)
ventana14.grid(row=6, column=2)
#-------------------------------------VENTANA vARIANZA---------------------------------------------#
 
ventana15 = Label(frame, text="DESV STD: ", bg="pink")
ventana15.grid(row=7, column=1)
ventana16 = Label(frame, textvariable=var, bg="yellow", width=17)
ventana16.grid(row=7, column=2)
 
#--------------------------ADJUNTAMOS LA IMAGEN DEL GRAFICO----------------------------#
 
imagen = PhotoImage(file="grafico.png")
labeleo = Label(frame, image=imagen).place(x=700, y=0)
 
 
#------------------------------------------------------------------------------------------#
raiz.mainloop()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar