Python - Mostrar una lista de resultados en una GUIDE-wxGlade

   
Vista:

Mostrar una lista de resultados en una GUIDE-wxGlade

Publicado por Emmanuel (3 intervenciones) el 02/02/2014 22:26:18
Hola a todos, tengo la siguiente consulta. Estoy haciendo una interfaz gráfica con el wxGlade y me he chocado con el siguiente problema.
En mi programa se ejecuta un while true (infinito) y se imprime por la consola algo así:
El precio del oro es 15$ y los fordward cuestan 250$ y al 20/01/2014 - 4:55:40
El precio del oro es 15$ y los fordward cuestan 250$ y al 20/01/2014 - 4:55:41
El precio del oro es 15$ y los fordward cuestan 250$ y al 20/01/2014 - 4:55:42
El precio del oro es 15.01$ y los fordward cuestan 250$ y al 20/01/2014 - 4:55:43
El precio del oro es 15.02$ y los fordward cuestan 250$ y al 20/01/2014 - 4:55:44
El precio del oro es 15$ y los fordward cuestan 250$ y al 20/01/2014 - 4:55:45
El precio del oro es 15.03$ y los fordward cuestan 250$ y al 20/01/2014 - 4:55:46
El precio del oro es 15.1$ y los fordward cuestan 250$ y al 20/01/2014 - 4:55:47
...
....
....

Mi programa:
En mi programa sólo ingreso 3 parámetros y un 4 parámetros lo jalo desde una web. Mi algoritmo se ejecuta, se imprime por consola y estos se guardan (inmediatamente) en una base de datos en mysql.
Consulta:
1) Deseo hace una interfaz en el wxGlade, me parece el más sencillo, pues hacerlo por el wxPython y el manejo de los sizer es medio pesado. Ya tengo la idea del 90% de lo que debería hacer. Pero no sé como poder imprimir todos esos resultados, de tal manera que se genera como una lista (no sé si lista es el nombre correcto). Dicho de otra manera, deseo una interfaz dónde se ingrese estos valores y en la parte inferior de la misma, haya un cuadro donde los resultados se vayan mostrando fila por fila, no quiero que el nuevo reemplace al que ya estaba.
Espero me puedan ayudar, estaré atento a tus comentarios.
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
Imágen de perfil de xve

Mostrar una lista de resultados en una GUIDE-wxGlade

Publicado por xve (1236 intervenciones) el 03/02/2014 07:44:12
Hola Emmanuel, no soy un experto en wxGrade, pero yo creo que te serviría un ListBox, ya que de esta manera, tendrás una barra de desplazamiento para poderte mover por todo el listado que vayas generando.

Espero que te sirva...
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

Mostrar una lista de resultados en una GUIDE-wxGlade

Publicado por Emmanuel (3 intervenciones) el 03/02/2014 18:00:42
Hola Xve, gracias por tu respuesta.
Mi código es el siguiente, es un borrador pues lo colores y cosas de diseño se van a mejorar:
CÓDIGO

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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
import wx
import wx.calendar
import math
import scipy.stats as st
import urllib
import re
#import mysql.connector
import matplotlib.pyplot as plt
import time
import pylab
 
# begin wxGlade: dependencies
import gettext
# end wxGlade
 
# begin wxGlade: extracode
# end wxGlade
 
 
class MyFrame1(wx.Frame):
    def __init__(self, *args, **kwds):
        # begin wxGlade: MyFrame1.__init__
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.PanelFondo = wx.Panel(self, wx.ID_ANY)
        self.label_1 = wx.StaticText(self.PanelFondo, wx.ID_ANY, _("Valorar Opciones Financieras dese la web de Finance Yahoo"))
        self.label_2 = wx.StaticText(self.PanelFondo, wx.ID_ANY, _("Indicaciones: Si desea ingresar un numero decimal, lo puede hacer 5.0/12"))
        self.panel_6 = wx.Panel(self.PanelFondo, wx.ID_ANY)
        self.label_3 = wx.StaticText(self.panel_6, wx.ID_ANY, _("Ingrese el precio de Ejercicio"))
        self.PrimeraCaja = wx.TextCtrl(self.panel_6, wx.ID_ANY, "")
        self.label_4 = wx.StaticText(self.panel_6, wx.ID_ANY, _("Ingrese el tiempo de vencimiento"))
        self.SegundaCaja = wx.TextCtrl(self.panel_6, wx.ID_ANY, "")
        self.label_5 = wx.StaticText(self.panel_6, wx.ID_ANY, _("Ingrese la tasa de interes libre de riesgo"))
        self.TerceraCaja = wx.TextCtrl(self.panel_6, wx.ID_ANY, "")
        self.label_6 = wx.StaticText(self.panel_6, wx.ID_ANY, _("Ingrese la tasa de volatilidad constante"))
        self.CuartaCaja = wx.TextCtrl(self.panel_6, wx.ID_ANY, "")
        self.label_7 = wx.StaticText(self.panel_6, wx.ID_ANY, _("Ingrese el tiempo (t=0, la prima)"))
        self.QuintaCaja = wx.TextCtrl(self.panel_6, wx.ID_ANY, "")
        self.button_2 = wx.Button(self.panel_6, wx.ID_ANY, _("Calcular"))
        self.calendar_ctrl_1 = wx.calendar.CalendarCtrl(self.PanelFondo, wx.ID_ANY)
        self.list_box_1 = wx.ListBox(self.PanelFondo, wx.ID_ANY, choices=[])
        self.LabelMostrarResultado = wx.StaticText(self.PanelFondo, wx.ID_ANY, "")
 
        # Menu Bar
        self.frame_2_menubar = wx.MenuBar()
        self.NameId1 = wx.Menu()
        self.frame_2_menubar.Append(self.NameId1, _("File"))
        self.NameId2 = wx.Menu()
        self.frame_2_menubar.Append(self.NameId2, _("Edit"))
        self.NameId3 = wx.Menu()
        self.frame_2_menubar.Append(self.NameId3, _("About"))
        self.SetMenuBar(self.frame_2_menubar)
        # Menu Bar end
 
        self.__set_properties()
        self.__do_layout()
 
        self.Bind(wx.EVT_BUTTON, self.Calcular, self.button_2)
        # end wxGlade
 
 
        #
 
    def __set_properties(self):
        # begin wxGlade: MyFrame1.__set_properties
        self.SetTitle(_("ServerVoeF 3.0. "))
        self.SetBackgroundColour(wx.Colour(255, 128, 37))
        self.panel_6.SetBackgroundColour(wx.Colour(128, 128, 128))
        self.PanelFondo.SetBackgroundColour(wx.Colour(50, 153, 204))
        # end wxGlade
 
    def __do_layout(self):
        # begin wxGlade: MyFrame1.__do_layout
        sizer_8 = wx.BoxSizer(wx.VERTICAL)
        sizer_11 = wx.BoxSizer(wx.VERTICAL)
        grid_sizer_1 = wx.GridSizer(6, 2, 0, 0)
        sizer_11.Add(self.label_1, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 15)
        sizer_11.Add(self.label_2, 0, wx.ALL | wx.ALIGN_RIGHT, 5)
        grid_sizer_1.Add(self.label_3, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 150)
        grid_sizer_1.Add(self.PrimeraCaja, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 0)
        grid_sizer_1.Add(self.label_4, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 150)
        grid_sizer_1.Add(self.SegundaCaja, 0, wx.ALIGN_CENTER_VERTICAL, 0)
        grid_sizer_1.Add(self.label_5, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 150)
        grid_sizer_1.Add(self.TerceraCaja, 0, wx.ALIGN_CENTER_VERTICAL, 0)
        grid_sizer_1.Add(self.label_6, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 150)
        grid_sizer_1.Add(self.CuartaCaja, 0, wx.ALIGN_CENTER_VERTICAL, 0)
        grid_sizer_1.Add(self.label_7, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 150)
        grid_sizer_1.Add(self.QuintaCaja, 0, wx.ALIGN_CENTER_VERTICAL, 0)
        grid_sizer_1.Add(self.button_2, 0, wx.LEFT, 150)
        self.panel_6.SetSizer(grid_sizer_1)
        sizer_11.Add(self.panel_6, 1, wx.EXPAND, 0)
        sizer_11.Add(self.calendar_ctrl_1, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 10)
        sizer_11.Add(self.list_box_1, 0, wx.ALL | wx.EXPAND, 10)
        sizer_11.Add(self.LabelMostrarResultado, 0, wx.EXPAND, 0)
        self.PanelFondo.SetSizer(sizer_11)
        sizer_8.Add(self.PanelFondo, 1, wx.EXPAND, 0)
        self.SetSizer(sizer_8)
        sizer_8.Fit(self)
        self.Layout()
        # end wxGlade
 
    def Calcular(self, event):  # wxGlade: MyFrame1.<event_handler>
 
        SO=1251.0
        k=float(self.PrimeraCaja.Value)
        T=float(self.SegundaCaja.Value)
        r=float(self.TerceraCaja.Value)
        sigma=float(self.CuartaCaja.Value)
        t=float(self.QuintaCaja.Value)
        d22=math.log(SO/k)+(T-t)*(r-(sigma**2)/2)
        d2=d22/sigma*math.sqrt(T-t)
        d1=d2+sigma*math.sqrt(T-t)
        valor1=SO*st.norm.cdf(d1)-k*math.exp(-r*(T-t))*st.norm.cdf(d2)
        put=valor1+k*math.exp(-r*(T-t))-SO
        c=SO+k+T+r+sigma+t
        #self.LabelMostrarResultado.SetLabel(str(valor1)) #IMPRIMIIRRRRRR
        #self.LabelMostrarResultado.SetLabel(str(valor1))
        #self.list_box_1.SetLabel(str(valor1))
        self.ListBox.Items.Add(str(c))
 
 
 
        #print "Event handler 'Calcular' not implemented!"
        event.Skip()
 
# end of class MyFrame1
if __name__ == "__main__":
    gettext.install("app") # replace with the appropriate catalog name
 
    app = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()
    frame_2 = MyFrame1(None, wx.ID_ANY, "")
    app.SetTopWindow(frame_2)
    frame_2.Show()
    app.MainLoop()

COMENTARIOS
Lo que deseo es que pueda imprimir el resutado "c" o "valo1r" uno de bajo del otro en la lista, pero que aparezca esa barrita de desplazamiento. Para empezar no sé ni como mostrar uno de esos resultados en esa lista. Mostrarlo en una TextLabel si puedo hacerlo, pero en un Lista, que es lo que deseo, no sé como hacerlo.
Si logro esto, entonces luego lo pienso ponerlo en un while y así mostrar muchos resultados (que será el resultado de ejecutar mi algoritmo) en esa lista.
He estado buscando por internet y no encuentro lo que necesito, espero me puedan ayudar.
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