#!/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__(self, parent, id, title):
# Inicializamos la clase wx.Frame de la cual heredará esta.
wx.Frame.__init__(self, parent, id, title)
# Creamos una lista de elementos a mostrar.
self.listbox_1 = wx.ListBox(self, -1)
# Creamos 2 botones.
self.button_1 = wx.Button(self, -1, u"Click aquí")
self.button_2 = wx.Button(self, -1, u"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_1, 1, wx.EXPAND|wx.ALL, 5)
sizer_2.Add(self.button_1, 0, wx.ALL, 5)
sizer_2.Add(self.button_2, 0, wx.ALL, 5)
sizer_1.Add(sizer_2, 0, wx.ALL, 5)
# 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( (800, 600) )
# Color de fondo de uno de los miembros (elementos)
self.button_1.SetBackgroundColour( wx.Colour(200, 255, 100) )
# Fuente del texto del listbox_1.
self.listbox_1.SetFont( wx.Font(24, wx.DEFAULT, wx.NORMAL, wx.NORMAL) )
# Esta función establecerá los diferentes eventos a los elementos.
def __set_event(self):
self.Bind(wx.EVT_BUTTON, self.OnButton1, self.button_1)
self.Bind(wx.EVT_BUTTON, self.OnButton2, self.button_2)
# Función al precionar el button_1
def OnButton1(self, event):
# Agregamos un texto al listbox_1.
self.listbox_1.Append(u"Precionado")
event.Skip()
# Función al preccionar el button_2
def OnButton2(self, event):
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