Sobre tabulación y demás

epicuro epicuro en ono.com
Lun Oct 6 12:12:20 CEST 2008


Hola. Es mi primera intervención en este foro. No soy profesional, así 
que puede que diga más de una tontería. Espero vuestra comprensión.
El caso es que una vez he aprendido un poco de Pyhton, ahora estoy 
aprendiendo wxPython y wxGlade, con la intención de hacer pequeños 
programas personales, sin más intención que aprender un poco y 
automatizar pequeñas tareas rutinarias.

El caso es que he conseguido que este programita haga lo que quiero que 
haga, pero me gustaría saber, cómo hago para que de una casilla en la 
que introduzco un dato, pase a la siguiente cuando pulse tabulador. Ya 
de paso, os pregunto ¿es necesario que con el puntero, me sitúe en las 
casillas para introducir datos, o hay alguna forma de que por defecto, 
se sitúe automáticamente en la primera casilla, para después pasar a la 
siguiente mediante tabulador?

Gracias

Aquí, el código:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# generated by wxGlade 0.6.3 on Sun Oct  5 17:28:07 2008

import wx
from math import *

# begin wxGlade: extracode
# end wxGlade
# No sé si hay que inicializar las variables globalmente como en "C"

h=0
m=0
t_c=0
minutos_c=0
mc=0
h_c=0



class MyFrame(wx.Frame):
    def __init__(self, *args, **kwds):
        # begin wxGlade: MyFrame.__init__
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.label_1 = wx.StaticText(self, -1, "HORAS REALIZADAS")
        self.text_ctrl_1 = wx.TextCtrl(self, -1, "")
        self.text_ctrl_2 = wx.TextCtrl(self, -1, "")
        self.label_2 = wx.StaticText(self, -1, "HORAS A DISFRUTAR")
        self.text_ctrl_3 = wx.TextCtrl(self, -1, "")
        self.text_ctrl_4 = wx.TextCtrl(self, -1, "")
        self.button_1 = wx.Button(self, -1, "CALCULA")

        self.__set_properties()
        self.__do_layout()

#          self.Bind(wx.EVT_TEXT_ENTER, self.get, self.text_ctrl_1)
 #         self.Bind(wx.EVT_TEXT_ENTER, self.get, self.text_ctrl_2)
  #        self.Bind(wx.EVT_TEXT, self.SetValue, self.text_ctrl_3)
           self.Bind(wx.EVT_BUTTON, self.OnClick, self.button_1)
        # end wxGlade

    def __set_properties(self):
        # begin wxGlade: MyFrame.__set_properties
        self.SetTitle("CONVERSOR DE HORAS EXTRAS")
        self.SetBackgroundColour(wx.Colour(255, 127, 0))
        self.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, ""))
        self.label_1.SetMinSize((193, 23))
        self.label_1.SetBackgroundColour(wx.Colour(255, 0, 0))
        self.label_2.SetBackgroundColour(wx.Colour(255, 0, 0))
        self.button_1.SetBackgroundColour(wx.Colour(0, 255, 0))
        # end wxGlade

    def __do_layout(self):
        # begin wxGlade: MyFrame.__do_layout
        sizer_1 = wx.BoxSizer(wx.VERTICAL)
        grid_sizer_1 = wx.GridSizer(3, 3, 1, 1)
        grid_sizer_1.Add(self.label_1, 0, 0, 0)
        grid_sizer_1.Add(self.text_ctrl_1, 0, 0, 0)
        grid_sizer_1.Add(self.text_ctrl_2, 0, 0, 0)
        grid_sizer_1.Add(self.label_2, 0, 0, 0)
        grid_sizer_1.Add(self.text_ctrl_3, 0, 0, 0)
        grid_sizer_1.Add(self.text_ctrl_4, 0, 0, 0)
        grid_sizer_1.Add(self.button_1, 0, 0, 0)
        sizer_1.Add(grid_sizer_1, 1, wx.EXPAND, 0)
        self.SetSizer(sizer_1)
        sizer_1.Fit(self)
        self.Layout()
        # end wxGlade

      
            
#Aquí hace las operaciones que tiene que hacer...
    def OnClick(self, event): # wxGlade: MyFrame.<event_handler>
        #print "Event handler `OnClick' not implemented"
        #event.Skip()

        h=int(self.text_ctrl_1.GetValue())
        m=int(self.text_ctrl_2.GetValue())
       
        mc=int((h*60)+m)
        t_c=float((mc*105)/(60))
        minutos_c=int(fmod(t_c,60))
        h_c=int(t_c/60)
       
        self.text_ctrl_3.SetValue(str(h_c))
        self.text_ctrl_4.SetValue(str(minutos_c))
                      
   
 # end of class MyFrame
       

if __name__ == "__main__":
    app = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()
    frame_1 = MyFrame(None, -1, "")
    app.SetTopWindow(frame_1)
    frame_1.Show()
    app.MainLoop()

_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





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