Re: Sobre tabulación y demás
Manuel Enrique González Ramírez
maengora en gmail.com
Mar Oct 7 06:22:05 CEST 2008
En Glade no se como se hace, pero en wxPython lo puedes hacer así:
key = event.GetKeyCode()
if key==9 or key==13 or key==wx.WXK_NUMPAD_ENTER:
self.control.SetFocus()
El 9 es TAB
El 13 es Enter, el del teclado junto a las letras
El wx.WXK_NUMPAD_ENTER, es el Intro del teclado numérico
Espero te sirva.
2008/10/6 epicuro <epicuro en ono.com>
> 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
>
_______________________________________________
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