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