• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

bukz

hora/minutos

4 mensagens neste tópico

Hi,

queria ter um programa com 2 combobox (uma para as  horas e uma para os minutos), mas queria o programa com base neste ->

# encoding: utf-8
import wx
import CustomControl_ComboBoxNumerica as CC_CmbNumerica
import datetime

class ComboData_Obj(wx.Panel):
def __init__(self,parent, id):
	self.ID_CMB1 = 1001
	self.ID_CMB2 = 1002
	self.ID_CMB3 = 1003
	wx.Panel.__init__(self, parent, id)
	self.combo1 = CC_CmbNumerica.ComboNumerica(self, self.ID_CMB1, pos = (20,20), size = (120,30), limit_inf=1950, limit_sup = 2050)
	self.combo2 = CC_CmbNumerica.ComboNumerica(self, self.ID_CMB2, pos = (140,20), size = (60,30), limit_inf=1, limit_sup = 12)
	Hoje = datetime.date.today()
	Ano = Hoje.year
	Mes = Hoje.month
	Dia = Hoje.day
	UltimoDia = self.DeterminaUltimoDiaDoMes(Ano,Mes)
	self.combo3 = CC_CmbNumerica.ComboNumerica(self, self.ID_CMB2, pos = (200,20), size = (60,30), limit_inf=1, limit_sup = UltimoDia)
	self.combo1.SeleccionarValor(Ano)
	self.combo2.SeleccionarValor(Mes)
	self.combo3.SeleccionarValor(Dia)
	self.Bind(wx.EVT_COMBOBOX,  self.SeleccionarAno,  id= self.ID_CMB1)
	self.Bind(wx.EVT_COMBOBOX,  self.SeleccionarMes,  id= self.ID_CMB2)
	self.Bind(wx.EVT_COMBOBOX,  self.SeleccionarDia,  id= self.ID_CMB3)

def SeleccionarAno(self, evt):
	self.ProcessaMudancaAnoMes()
	return self.combo1.ObterValorSeleccionado()

def SeleccionarMes(self, evt):
	self.ProcessaMudancaAnoMes()
	return self.combo2.ObterValorSeleccionado()

def SeleccionarDia(self,  evt):
	return self.combo3.ObterValorSeleccionado()

def ProcessaMudancaAnoMes(self):
	Ano = self.combo1.ObterValorSeleccionado()
	Mes = self.combo2.ObterValorSeleccionado()
	Dia = self.combo3.ObterValorSeleccionado()
	UltimoDia = self.DeterminaUltimoDiaDoMes(Ano,Mes)
	if Dia > UltimoDia: 
		Dia = UltimoDia
	self.combo3.AlteraLimiteSuperior(UltimoDia)
	self.combo3.SeleccionarValor(Dia)

def DeterminaUltimoDiaDoMes(self, pAno, pMes):
	ultimodia=0
	lista30 = [4,6,9,11]
	lista31 = [1,3,5,7,8,10,12]
	if pMes in lista31:
		ultimodia = 31
	elif pMes in lista30:
		ultimodia = 30
	else:
		if pAno % 4 == 0:
			ultimodia=29
		else:
			ultimodia=28
	return ultimodia

def ObterDataSeleccionada(self):
	return str(self.combo1.ObterValorSeleccionado()) + "/" + str(self.combo2.ObterValorSeleccionado()) + "/" + str(self.combo3.ObterValorSeleccionado())

def ObterAnoSeleccionado(self):
	return str(self.combo1.ObterValorSeleccionado())

def ObterMesSeleccionado(self):
	return str(self.combo2.ObterValorSeleccionado())

def ObterDiaSeleccionado(self):
	return str(self.combo3.ObterValorSeleccionado())

def AtribuiDataDeSistema(self):
	Hoje = datetime.date.today()
	self.combo1.SeleccionarValor(Hoje.year)
	self.combo2.SeleccionarValor(Hoje.month)
	self.combo3.SeleccionarValor(Hoje.day)

def AtribuiData(self, dt):
	ano = dt[0:4]
	mes = dt[5:7]
	dia = dt[9:11]
	self.combo1.SeleccionarValor(int(ano))
	self.combo2.SeleccionarValor(int(mes))
	self.combo3.SeleccionarValor(int(dia))

#####

# encoding: utf-8
import wx
import UserControl_Data

class Frame_Main(wx.Frame):
    def __init__(self,parent, id, title):
        #constantes para identificação dos objectos
        self.PAINELDATA_ID1=1010
        self.PAINELDATA_ID2=1020
        self.BOTAODATA1_ID=1030
        self.BOTAOANO1_ID=1040
        self.BOTAOMES1_ID=1050
        self.BOTAODIA1_ID=1060
        self.BOTAODATASISTEMA_ID=1070
        self.ATRTIBUIDATA1_ID=1080
        # frame
        wx.Frame.__init__(self, parent, id, size = (1000,1000),title="ZZZZ")
        #painel principal
        self.painel0=wx.Panel(self)
        #sizer principal
        bsizer=wx.BoxSizer(wx.VERTICAL)
        #sizer funcional
        fgsizer = wx.FlexGridSizer(4, 4, 3, 3)
        #objectos a colocar no sizer
        self.data1=UserControl_Data.ComboData_Obj(self.painel0, self.PAINELDATA_ID1)
        self.data2=UserControl_Data.ComboData_Obj(self.painel0, self.PAINELDATA_ID2)
        self.btdata1 = wx.Button(self.painel0, self.BOTAODATA1_ID, "1a Data")
        self.btano1 = wx.Button(self.painel0, self.BOTAOANO1_ID, "1o Ano")
        self.btmes1 = wx.Button(self.painel0, self.BOTAOMES1_ID, "1o Mes")
        self.btdia1 = wx.Button(self.painel0, self.BOTAODIA1_ID, "1o Dia")
        self.btds = wx.Button(self.painel0, self.BOTAODATASISTEMA_ID, "Dt.Sist.")
        self.btsetdt = wx.Button(self.painel0, self.ATRTIBUIDATA1_ID, "Atr.Data")
        #preenchimento do sizer
        #linha em branco
        for x in range(0,4):
            fgsizer.Add((10,10), 0, wx.EXPAND)
        #objectos
        fgsizer.Add(self.data1, 1, wx.ALIGN_CENTER_VERTICAL)
        fgsizer.Add(self.data2, 1, wx.ALIGN_CENTER_VERTICAL)
        fgsizer.Add(self.btdata1, 1, wx.ALIGN_CENTER_VERTICAL)
        fgsizer.Add(self.btano1, 1, wx.ALIGN_CENTER_VERTICAL)
        fgsizer.Add((10,10), 0, wx.EXPAND)
        fgsizer.Add((10,10), 0, wx.EXPAND)
        fgsizer.Add(self.btmes1, 1, wx.ALIGN_CENTER_VERTICAL)
        fgsizer.Add(self.btdia1, 1, wx.ALIGN_CENTER_VERTICAL)
        fgsizer.Add((10,10), 0, wx.EXPAND)
        fgsizer.Add((10,10), 0, wx.EXPAND)
        fgsizer.Add(self.btds, 1, wx.ALIGN_CENTER_VERTICAL)
        fgsizer.Add(self.btsetdt, 1, wx.ALIGN_CENTER_VERTICAL)
        #linha em branco
        for x in range(0,4):
            fgsizer.Add((10,10), 0, wx.EXPAND)
        #coloca sizer funcional no sizer principal
        bsizer.Add(fgsizer)
        #dimensiona o painel para o sizer principal
        self.painel0.SetSizer(bsizer)
        #dimensiona o sizer principal para a frame
        bsizer.Fit(self)
        bsizer.SetSizeHints(self)
        #centra a frame
        self.Center()
        self.Bind(wx.EVT_BUTTON, self.PrimeiraData, id = self.BOTAODATA1_ID)
        self.Bind(wx.EVT_BUTTON, self.PrimeiroAno, id = self.BOTAOANO1_ID)
        self.Bind(wx.EVT_BUTTON, self.PrimeiroMes, id = self.BOTAOMES1_ID)
        self.Bind(wx.EVT_BUTTON, self.PrimeiroDia, id = self.BOTAODIA1_ID)
        self.Bind(wx.EVT_BUTTON, self.AtribuiDataDeSistema, id = self.BOTAODATASISTEMA_ID)
        self.Bind(wx.EVT_BUTTON, self.AtribuiData, id = self.ATRTIBUIDATA1_ID)

    def PrimeiraData(self, evt):
        print self.data1.ObterDataSeleccionada()
    def PrimeiroAno(self, evt):
        print self.data1.ObterAnoSeleccionado()
    def PrimeiroMes(self, evt):
        print self.data1.ObterMesSeleccionado()
    def PrimeiroDia(self, evt):
        print self.data1.ObterDiaSeleccionado()
    def AtribuiDataDeSistema(self, evt):
        self.data1.AtribuiDataDeSistema()
    def AtribuiData(self, evt):
        self.data1.AtribuiData("1960/07/08")
        
application = wx.App()
frame = Frame_Main(None, wx.ID_ANY,"ola")
frame.Show()
application.MainLoop()


#######


# encoding: utf-8
import wx

class ComboNumerica(wx.ComboBox):
def __init__(self, parent, id, pos, size, limit_inf, limit_sup):
	self.limit_inf = limit_inf
	self.limit_sup = limit_sup
	self.cmb = wx.ComboBox(parent, id, choices = self.FazLista(self.limit_inf, self.limit_sup))
	self.cmb.SetPosition(pos)
	self.cmb.SetSize(size)

def ObterValorSeleccionado(self):
	return int(self.cmb.GetValue())

def SeleccionarValor(self, valor):
	self.cmb.SetValue(str(valor))
def FazLista(self, limit_inf, limit_sup):
	lista=[]
	for i in range(limit_inf, limit_sup+1):
		lista.append(str(i))
	return lista

def AlteraLimiteInferior(self, limit_inf):
	self.cmb.SetItems(self.FazLista(limit_inf, self.limit_sup))

def AlteraLimiteSuperior(self, limit_sup):
	self.cmb.SetItems(self.FazLista(self.limit_inf, limit_sup))

alguem me pode dar um empurrão ?  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

empurrao para o inicio, como ideias ou exemplos do q fazer

Programa já esta resolvido

posto aqui mais tarde

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora