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