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/