cambiar parametros a boton en wxpython

Iniciado por metamax, 7 Julio 2018, 22:13 PM

0 Miembros y 1 Visitante están viendo este tema.

metamax

HOla buenas tengo una duda acerca de como cambiar parametros a un boton en wxpython. Me explico:
Tengo una ventana con una lista desplegable con algunos colores y  tengo un boton mas abajo que dice "OK"

La idea es que el usuario seleccione algun color de la lista y luego le de al boton "OK".

Si el usuario selecciona el color blanco se debe abrir un pop-up con un mensaje de error.
Si selecciona algun otro color se debe cerrar la ventana.
Aqui el codigo en python:

Código (php) [Seleccionar]

import wx



class ventana(wx.App):
   """docstring for ventana"""

   def OnInit(self):
       frame = crear_ventana()
       frame.Show(True)
       frame.Centre()
       return True

####SI EL USUARIO SELECCIONA BLANCO Y LE DA OK DEBE APARECER ESTA VENTAN:#######


class ventana_error(wx.Dialog):

   def __init__(self, padre):

       wx.Dialog.__init__(self, padre, wx.NewId(),
                          title="Error", size=(300, 100))
       panel = wx.Panel(self, -1)
       boton = wx.Button(panel, label="entendido",
                         pos=(125, 37), size=(70, 25))
       boton.Bind(wx.EVT_BUTTON, self.llamar)
       self.Centre()
       normal = wx.StaticText(
           panel, -1, "Seleccione otro color", pos=(75, 15), style=wx.ALL)
       # self.entrada_texto=wx.TextCtrl(panel,value="",pos=(5,27),size=(5,5),style=wx.TE_LEFT)

   def llamar(self, event):
       self.Close(True)


#################VENTANA PRINCIPAL: ##################

class crear_ventana(wx.Frame):

   def __init__(self):
       wx.Frame.__init__(self, None, -1, title="Seleccione colores", size=(200, 200),
                         pos=(100, 10), style=wx.DEFAULT_FRAME_STYLE & ~(wx.RESIZE_BORDER | wx.MAXIMIZE_BOX | wx.MINIMIZE_BOX | wx.CLOSE_BOX))
       panel1 = wx.Panel(self, -1)

       boton1 = wx.Button(panel1, label="OK",
                          pos=(50, 100), size=(50, 25))

       opciones = [u"Blanco", u"Rojo", u"Verde"]
       self.opciones = wx.Choice(
           panel1, wx.ID_ANY, choices=opciones, pos=(50, 50), size=(100, 25))
       self.opciones.SetSelection(-1)

       #####AQUI ESTA EL PROBLERMA:######
       boton1.Bind(wx.EVT_BUTTON, self.llamar_ventana1)
       # Lo que necesito es cambiar ese llamar_ventana1
       # por llamar_ventana2 pero dependiendo de lo que el
       # usuario seleccione

       dec = self.opciones.Bind(
           wx.EVT_CHOICE, self.Choice)  # esto se me ocurrio
       # pero resulta que solo funciona una vez al ejecutarse
       # tal vez que me devuelva un valor distinto cada vez que
       # el usuario cambie de seleccion
       # dec almacena eso que el usuario selecciona

       print("dec: ")
       print(dec)

   def Choice(self, event):  # Esta es la funcion para verificar lo que se selecciono
     
       opcion_seleccionada = self.opciones.GetStringSelection()
       opcion_seleccionada_uno = self.opciones.GetSelection()
       print(opcion_seleccionada)
       print(opcion_seleccionada_uno)
       return opcion_seleccionada_uno

   def llamar_ventana1(self, event):  # si el usuario selecciona blanco
       # llamar a esta funcion
       ventana2 = ventana_error(self)
       ventana2.ShowModal()
       ventana2.Destroy()

   def llamar_ventana2(self, event):  # si selecciona otro color llamar a esta funcion
       self.Destroy()


app1 = ventana(0)
app1.MainLoop()



Si porfavor alguien sabe como hacer eso me explica.
Estare aqui todo el tiempo gracias :)