Buenos dias, lo que intento hacer es poder regenerar los calendarios, para que 
pueda elegir un mes, pero antes de elegir que no me muestre nada, de hay que 
llame al InitUI desde el evento de menu. De momento he conseguido se me 
actualize el mes y los dias pero no puedo regenerarlo pues si empezamos en el 
mes de enero al hacer febrero, me sigue poniendo la ultima fila de enero.
 
#!/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_FEBRERO = 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, size = wx.Size(895, 275), style =
                          wx.CLIP_CHILDREN)
        self.carga = data.TimeData()
        self.month = self.carga.month
    def InitUI(self, month):
        font = wx.Font(15, family = wx.FONTFAMILY_DEFAULT, style =
                        wx.FONTSTYLE_NORMAL, weight = wx.FONTWEIGHT_BOLD,
                        encoding = wx.FONTENCODING_CP1252)
        self.month = month
        # 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[12 - self.month]
        num_month = self.carga.fweek_dict[self.month_name]
        numero = str(num_month)
        week_range = self.carga.nweek_dict[self.month_name]
        for num in range(0, week_range):
            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.nday_dict[self.month_name]
        self.daylab_dict = {}
        if day == "Mon":
            y = 1
        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
        frest = y - 1
        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
        for cont in range (0, frest):
            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 cont > 4:
                self.blalab.SetBackgroundColour(wx.Colour(255, 0, 0))
            self.gbsizer.Add(self.blalab, pos = wx.GBPosition(1, (cont + 1)), 
flag = wx.ALIGN_CENTER_VERTICAL,                        border = 5)
        erest = (week_range * 7) - end_dict - frest
        print("week_range: " + str(week_range))
        print("end_dict: " + str(end_dict))
        print("frest: " + str(frest))
        print ("erest: " + str(erest))
        for cont in range (0, erest):
            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 = wx.Size(895, 275
                                                                        ))
        # Attributes
        self.panel = Pagina(self)
        # Setup Menu
        menubar = wx.MenuBar()
        # File's Menu
        mesm = wx.Menu()
        emmi = wx.MenuItem(mesm, ID_ENERO, "&Enero")
        mesm.AppendItem(emmi)
        fmmi = wx.MenuItem(mesm, ID_FEBRERO, "&Febrero")
        mesm.AppendItem(fmmi)        
        menubar.Append(mesm, '&Meses')
        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_ENERO:
            self.month = 1
        if self.evt_id == ID_FEBRERO:
            self.month = 2
        self.DataMonth()
        event.Skip()
    def DataMonth(self):
        self.panel.Fit()
        gui = self.panel.InitUI(month = self.month)
        self.panel.Layout()
        
if __name__ == "__main__":
    app = Aplicacion(False)
    app.MainLoop()
_______________________________________________
Python-es mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a