[Python-es] GridBagSizer no responde

Gonzalo Mouriÿfffffffffff1o Pardo gmourinopardo en yahoo.es
Jue Oct 18 09:58:09 CEST 2012


Buenos días:
Tengo una duda el código anexo no me genera bien el GriBagSizer, pero si la función la realizo en la función __init__ si, alguna solución:
Gracias.

#!/usr/bin/env python
# -*- coding: cp1252 -*-

import os
import wx

import new_user
import about
import data

# News Identifiers
ID_NUEVO = wx.NewId()
ID_ABRIR = wx.NewId()
ID_CERRAR = wx.NewId()
ID_GUARDAR = wx.NewId()
ID_GUARDAR_COMO = wx.NewId()
ID_IMPRIMIR = wx.NewId()
ID_SALIR = wx.NewId()
ID_DESHACER = wx.NewId()
ID_REHACER = wx.NewId()
ID_CORTAR = wx.NewId()
ID_COPIAR = wx.NewId()
ID_PEGAR = wx.NewId()
ID_MESES = wx.NewId()
ID_ENERO = wx.NewId()
ID_AYUDA = wx.NewId()
ID_ACERCA_DE = wx.NewId()

class Aplicacion(wx.App):

    def OnInit(self):
        self.frame = Ventana(None, -1, title = "Control Horario")
        self.SetTopWindow(self.frame)
        self.frame.Show()
        return True

class Pagina(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)
        self.carga = data.TimeData()
        self.month = self.carga.month

    def InitUI(self):
        font = wx.Font(15, family = wx.FONTFAMILY_DEFAULT, style =
                        wx.FONTSTYLE_NORMAL, weight = wx.FONTWEIGHT_BOLD,
                        encoding = wx.FONTENCODING_CP1252)

        # Layout
        self.sizer = wx.BoxSizer(wx.HORIZONTAL)
        self.gbsizer = wx.GridBagSizer(0, 0)
        self.sizer.Add(self.gbsizer, 1, wx.ALL, border = 5)
        self.SetSizer(self.sizer)

        # Column's Labels
        sem = {0 : ("Lunes", 169), 1 : ("Martes", 266), 2 : ("Miercoles" , 359),
               3 : ("Jueves",  478), 4 : ("Viernes", 578), 5: ("Sabado", 686),
               6 : ("Domingo", 783)}
        for num in range(0,7):
            self.cont = sem[num]
            dia = self.cont[0]
            y = num + 1
            self.collab = wx.StaticText(self, -1, label = dia,  size = wx.Size
                                        (105, 25), style = wx.ALIGN_CENTER |
                                        wx.SIMPLE_BORDER)
            self.collab.SetFont(font)
            if y < 6:
                self.collab.SetBackgroundColour(wx.Colour(255, 255, 255))
            else:
                self.collab.SetBackgroundColour(wx.Colour(255, 0, 0))

            self.gbsizer.Add(self.collab, pos = wx.GBPosition(0, y), flag =
                        wx.ALIGN_CENTER_VERTICAL, border = 5)

        # Month's Label
        self.mes = self.carga.month_dict[self.month]
        self.monlab = wx.StaticText(self, -1, label = self.mes, size = wx.Size(140,
                                                                          25),
                                    style = wx.ALIGN_CENTER)
        self.monlab.SetFont(font)
        self.monlab.SetForegroundColour(wx.Colour(255, 0, 255))
        self.gbsizer.Add(self.monlab, pos = wx.GBPosition(0, 0), flag =
                    wx.ALIGN_CENTER_VERTICAL,  border = 5)

        # Row's Labels
        self.month_name = self.carga.month_tup[self.month - 1]
        num_month = self.carga.nweek_dict[self.month_name]
        numero = str(num_month)
        for num in range(0, 5):
            x = num + 1
            self.rowlab = wx.StaticText(self, -1, label = numero, size = wx.Size
                                        (140, 25), style = wx.ALIGN_CENTER |
                                        wx.SIMPLE_BORDER)
            self.rowlab.SetFont(font)
            self.rowlab.SetForegroundColour(wx.Colour(0, 0, 255))
            self.rowlab.SetBackgroundColour(wx.Colour(255, 255, 255))
            self.rowlab.Wrap(-1)
            self.gbsizer.Add(self.rowlab, pos = wx.GBPosition(x, 0), flag =
                        wx.ALIGN_CENTER_VERTICAL, border = 5)
            number = int(numero) + 1
            numero = str(number)

        # Day's Labels
        day = self.carga.week_dict[self.month_name]
        end_dict = self.carga.num_dict[self.month_name]
        self.daylab_dict = {}
        if day == "Mon":
            y = 1
            self.coor_x = 145
        elif day == "Tue":
            y = 2
        elif day == "Wed":
            y = 3
        elif day == "Thu":
            y = 4
        elif day == "Fri":
            y = 5
        elif day == "Sat":
            y = 6
        else:
            y = 7
        x = 1
        for cont in range (0, end_dict):
            contador = str(cont+1)
            if y > 7:
                x = x + 1
                y = 1
            self.daylab = wx.StaticText(self, label = contador, size = wx.Size
                                        (105, 25), style = wx.ALIGN_CENTRE |
                                        wx.SIMPLE_BORDER)
            self.daylab.SetFont(font)
            self.daylab.SetBackgroundColour(wx.Colour(255, 255, 255))
            if y > 5:
                self.daylab.SetBackgroundColour(wx.Colour(255, 0, 0))
            self.daylab_dict [(x, y)] = contador
            self.gbsizer.Add(self.daylab, pos = wx.GBPosition(x, y), flag = wx.ALIGN_CENTER_VERTICAL,
                        border = 5)
            self.daylab.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)
            y = y + 1

        # Blank's Labels
        resto = 35 - end_dict
        for cont in range (0, resto):
            self.blalab = wx.StaticText(self, label = "", size = wx.Size(105, 25
                                                                         ),
                                        style = wx.ALIGN_CENTER |
                                        wx.SIMPLE_BORDER)
            self.blalab.SetFont(font)
            self.blalab.SetBackgroundColour(wx.Colour(255, 255, 255))
            if y > 5:
                self.blalab.SetBackgroundColour(wx.Colour(255, 0, 0))
            self.gbsizer.Add(self.blalab, pos = wx.GBPosition(x, y), flag = wx.ALIGN_CENTER_VERTICAL,                        border = 5)
            y = y + 1

    def OnLeftDown(self, event):
        mou_pos = wx.GetMousePosition()
        scr_pos = self.GetScreenPosition()
        abs_x = mou_pos.x - scr_pos.x
        abs_y = mou_pos.y - scr_pos.y
        if abs_x < 250:
            coor_x = 1
        elif abs_x >= 250 and abs_x < 355:
            coor_x = 2
        elif abs_x >= 355 and abs_x < 460:
            coor_x = 3
        elif abs_x >= 460 and abs_x < 565:
            coor_x = 4
        elif abs_x >= 565 and abs_x < 670:
            coor_x = 5
        elif abs_x >= 670 and abs_x < 775:
            coor_x = 6
        else:
            coor_x = 7
        if abs_y < 55:
            coor_y = 1
        elif abs_y >= 55 and abs_y < 80:
            coor_y = 2
        elif abs_y >= 80 and abs_y < 105:
            coor_y = 3
        elif abs_y >= 105 and abs_y < 130:
            coor_y = 4
        else:
            coor_y = 5
        data_day = self.daylab_dict[(coor_y, coor_x)]
        event.Skip()

class Ventana(wx.Frame):
    
    """Constructor"""
    def __init__(self, parent, id, title):
        super(Ventana, self).__init__(parent, id, title, size = (895, 275))

        # Attributes
        self.panel = Pagina(self)

        # Setup Menu
        menubar = wx.MenuBar()

        # File's Menu
        arcm = wx.Menu()
        aami = wx.MenuItem(arcm, ID_ABRIR, "&Abrir...\tCtrl+A")
        arcm.AppendItem(aami)
        menubar.Append(arcm, '&Archivo')
        self.SetMenuBar(menubar)        
        # Event Handlers
        self.Bind(wx.EVT_MENU, self.OnMenu)

    """Do menu events"""
    def OnMenu(self, event):
        self.evt_id = event.GetId ()
        if self.evt_id == ID_ABRIR:
            self.month = 2
        event.Skip()
        
if __name__ == "__main__":
    app = Aplicacion(False)
    app.MainLoop()
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20121018/9dcca766/attachment.html>


Más información sobre la lista de distribución Python-es