sábado, 15 de septiembre de 2018

¿Cómo crear una ventana en Python con wxPython?




#!/usr/bin/env python
# -*- coding: utf-8 -*-


# Importamos la librería gráfica wxPython.
import wx


# Nuestra clase que hereda de wx.Frame y que representará la ventana.
class MyFrame(wx.Frame):

    # Función donde se inicializa, donde se crean o se declaran los
    # miembros (variables) de la clase.
    def __init__(selfparentidtitle):
        # Inicializamos la clase wx.Frame de la cual heredará esta.
        wx.Frame.__init__(selfparentidtitle)
        # Creamos una lista de elementos a mostrar.
        self.listbox_1 wx.ListBox(self, -1)
        # Creamos 2 botones.
        self.button_1 wx.Button(self, -1u"Click aquí")
        self.button_2 wx.Button(self, -1u"Cerrar")
        # Llmamos otros métodos que creamos para la inicialización.
        self.__do_layout()
        self.__set_properties()
        self.__set_event()
    

    # Esta función ordenará los elementos de nuestra ventana,
    # mediante el uso de sizers.
    def __do_layout(self):
        # Creamos los sizers de tipo BoxSizer donde los elementos se
        # irán incluyendo de manera vertical y horizontalmente.
        sizer_1 wx.BoxSizer(wx.VERTICAL)
        sizer_2 wx.BoxSizer(wx.HORIZONTAL)
        # Incluímos los elementos en los sizers mediante su método Add,
        # con los siguientes argumentos:
        #    1. Nombre del elemento a agregar (variable)
        #    2. Proporción que ocupará el elemento dentro del sizer.
        #    3. Margenes que tendrá el elemento: wx.ALL = Todos.
        #    4. Espacio de los margenes.
        sizer_1.Add(self.listbox_11wx.EXPAND|wx.ALL5)
        sizer_2.Add(self.button_10wx.ALL5)
        sizer_2.Add(self.button_20wx.ALL5)
        sizer_1.Add(sizer_20wx.ALL5)
        # Establecemos el sizer principal a la ventana.
        self.SetSizer(sizer_1)
        self.Layout()
    
    # Esta función establecerá las propiedades a los elementos.
    def __set_properties(self):
        # Tamaño de la ventana.
        self.SetSize( (800600) )
        # Color de fondo de uno de los miembros (elementos)
        self.button_1.SetBackgroundColourwx.Colour(200255100) )
        # Fuente del texto del listbox_1.
        self.listbox_1.SetFontwx.Font(24wx.DEFAULTwx.NORMALwx.NORMAL) )

    # Esta función establecerá los diferentes eventos a los elementos.
    def __set_event(self):
        self.Bind(wx.EVT_BUTTONself.OnButton1self.button_1)
        self.Bind(wx.EVT_BUTTONself.OnButton2self.button_2)
    
    # Función al precionar el button_1
    def OnButton1(selfevent):
        # Agregamos un texto al listbox_1.
        self.listbox_1.Append(u"Precionado")
        event.Skip()
    
    # Función al preccionar el button_2
    def OnButton2(selfevent):
        self.Close()
        event.Skip()
    
    

# Instaciamos la clase App donde se ejecutará nuestra ventana.
app wx.App(0)
# Instanciamos la clase MyFrame que representa nuestra ventana.
frame MyFrame(None, -1"Hola Mundo")
# Mostramos la ventana.
frame.Show()
# Esto crea una especie de bucle mientras nuestra ventana este abierta.
app.MainLoop()

No hay comentarios.:

Publicar un comentario