Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: .:Swik:. en 20 Mayo 2010, 16:10 pm



Título: [Python] Ayuda con intefaz grafica!!
Publicado por: .:Swik:. en 20 Mayo 2010, 16:10 pm
El caso es que estoy traspasando un programilla que hice a wxpython. El problema es que tengo hecho el code pero me da error en la linea 20 en negativa = ... y no se que es. Si me pudierais ayudar...

Aqui os dejo el code:

Código
  1. import wx
  2. import math
  3.  
  4. class Herr(wx.Frame):
  5.  
  6.  def __init__(self):
  7.    wx.Frame.__init__(self, parent=None, title='Ecuaciones 2 grado')
  8.  
  9.    self.btnCalcular = wx.Button(self, label='Calcular', pos=(20, 180), size=(60, 30))
  10.  
  11.    self.a = wx.TextCtrl(self, pos=(20,45), size=(60,20))
  12.    self.b = wx.TextCtrl(self, pos=(20,70), size=(60,20))
  13.    self.c = wx.TextCtrl(self, pos=(20,95), size=(60,20))
  14.    self.d = wx.TextCtrl(self, pos=(20,120), size=(60,20))
  15.    self.e = wx.TextCtrl(self, pos=(20,145), size=(60,20))
  16.    self.Bind(wx.EVT_BTN, self.ecuacion, self.btnCalcular)
  17.  
  18. def ecuacion(self, event):
  19.    try:
  20.        a = self.a.GetValue()
  21.        b = self.b.GetValue()
  22.        c = self.c.GetValue()
  23.  
  24.        positiva = self.d.SetValue((-b + math.sqrt(b*b - 4*a*c))/(2*a))
  25.        negativa = self.e.SetValue((-b - math.sqrt(b*b - 4*a*c))/(2*a))        
  26.  
  27.  
  28.    except:
  29.        positiva = self.d.SetValue('Sin solucion')
  30.        negativa = self.e.SetValue('Sin solucion')  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37. class App(wx.App):
  38.    def OnInit(self):
  39.        frame = Herr()
  40.        frame.Show()
  41.        self.SetTopWindow(frame)
  42.        return True
  43.  
  44.  
  45. if __name__ == '__main__':
  46.    app = App()
  47.    app.MainLoop()


Título: Re: [Python] Ayuda con intefaz grafica!!
Publicado por: Novlucker en 20 Mayo 2010, 16:17 pm
Que error te da EXACTAMENTE? :P Obviamente no es problema de la interfaz

Saludos


Título: Re: [Python] Ayuda con intefaz grafica!!
Publicado por: .:Swik:. en 20 Mayo 2010, 16:23 pm
creo que ya lo arregle. Era problema en la funcion "ecuacion" que he puesto los SetValue como str porque los int no los coge bien creo

Asi me quedo:

Código
  1.    def ecuacion(self, event):
  2.        try:
  3.            a = int(self.a.GetValue())
  4.            b = int(self.b.GetValue())
  5.            c = int(self.c.GetValue())
  6.            self.d.SetValue(str((-b + math.sqrt(b*b - 4*a*c))/(2*a)))
  7.            self.e.SetValue(str((-b - math.sqrt(b*b - 4*a*c))/(2*a)))
  8.  
  9.        except:
  10.            self.d.SetValue('Sin solucion')
  11.            self.e.SetValue('Sin solucion')
  12.  


Título: Re: [Python] Ayuda con intefaz grafica!!
Publicado por: Novlucker en 20 Mayo 2010, 16:28 pm
Ya entendí, creo que el problema si era de la interfaz :xD , dije que no porque me pareció raro que no saliera en el "positivo" y si en "negativo". Supongo, y digo supongo porque no soy de crear GUIs para python que el Textctrl retorna un string, y es por eso que luego te lo reconoce como tal :P, así que seguramente tendrás que hacer lo mismo siempre.

Saludos


Título: Re: [Python] Ayuda con intefaz grafica!!
Publicado por: .:Swik:. en 20 Mayo 2010, 16:43 pm
Gracias Novlucker por eso. Y ahora otra cosa xD
para poner un texto al lado de cada recuadro he hecho esto:

Código:
wx.Frame.__init__(self, parent=None, title='Ecuaciones 2 grado')
        self.btnCalcular = wx.Button(self, label='Calcular', pos=(20, 180), size=(60, 30))
        self.a = wx.TextCtrl(self, pos=(20,45), size=(60,20))
        self.b = wx.TextCtrl(self, pos=(20,70), size=(60,20))
        self.c = wx.TextCtrl(self, pos=(20,95), size=(60,20))
        self.d = wx.TextCtrl(self, pos=(20,120), size=(60,20))
        self.e = wx.TextCtrl(self, pos=(20,145), size=(60,20))
        wx.StaticTex(self, label='Introduzca a', pos=(10,45))
        wx.StaticTex(self, label='Introduzca b', pos=(10,70))
        wx.StaticTex(self, label='Introduzca c', pos=(10,95))
        wx.StaticTex(self, label='Resultado postivo', pos=(10,120))
        wx.StaticTex(self, label='Resultado negativo', pos=(10,145))
        self.Bind(wx.EVT_BUTTON, self.ecuacion, self.btnCalcular)

pero al ejecutarlo no sale el texto  xD. Si me pudieras ayudar...  :D


Título: Re: [Python] Ayuda con intefaz grafica!!
Publicado por: Novlucker en 20 Mayo 2010, 16:49 pm
Y no se parte?

StaticText

Saludos


Título: Re: [Python] Ayuda con intefaz grafica!!
Publicado por: .:Swik:. en 20 Mayo 2010, 17:09 pm
No te entendi  :huh:


Título: Re: [Python] Ayuda con intefaz grafica!!
Publicado por: Novlucker en 20 Mayo 2010, 17:12 pm
Tu estas poniendo wx.StaticTex, y debería de ser wx.StaticText, por eso pregunto si no se parte.

Saludos


Título: Re: [Python] Ayuda con intefaz grafica!!
Publicado por: .:Swik:. en 20 Mayo 2010, 17:41 pm
Ya lo arregle. Gracias Novlucker  :D