[PIPython] [wxPython] Domanda sulle hot key (EVT_KEY_DOWN)

Tiziano Lattisi tiziano
Ven 19 Nov 2004 15:16:45 CET


Hai pensato a gestire l'evento dell'oggetto che hai in focus (penso 
l'immagine) ?

tiziano

Il giorno 27/mag/04, alle 18:10, whamoo ha scritto:

> Salve a tutti,
>
> Sto scrivendo un'applicazione a scopi didattici per una bimba con 
> alcuni problemi, per cui devo far un programma che visualizzi 
> un'immagine che premendo il tasto che corrisponde all'iniziale 
> dell'immagine dia un certo messaggio, mentre se viene premuto il tasto 
> scorretto dia un errore.
>
> Il mio problema e' questo, ho la mia applicazione con un pannello, un 
> box sizer e un'immagine e fin qui no problemi, ma quando bindo al 
> panel l'evento EVT_KEY_DOWN e scrivo la funzione corrispondente non 
> succede nulla, la funzione non viene lanciata...
>
> Se tolgo l'immagine, tutto funziona come dovrebbe, mi e' stato detto 
> che e' un problema di focus, ma non riesco a saltarci fuori, qualcuno 
> puo' darmi una mano?
>
> Posto qui il codice (semplificato, solo per la focalizzazione sul 
> problema):
> Grazie in anticipo =)
>
> Whamoo
>
> ---------- Begin code:
>
> import wx
>
> class MyFrame(wx.Frame):
>
>     def __init__(self, parent, title):
>         wx.Frame.__init__(self, parent, -1, title,
>                           pos=(150, 150))
>
>         self.panel = wx.Panel(self)
>         wx.EVT_KEY_DOWN(self.panel, self.pn_OnKeyUp)
>
>
>         img = wx.StaticBitmap(self.panel, -1, wx.EmptyBitmap(100,100))
>
>         wx.EVT_SET_FOCUS(img, self.OnSetFocus)
>         wx.EVT_SET_FOCUS(self, self.OnSetFocus)
>         box = wx.BoxSizer(wx.VERTICAL)
>         box.Add(img, 0, wx.GROW)
>
>
>         self.panel.SetSizer(box)
>         self.panel.Layout()
>         self.panel.SetFocus()
>
>     def OnSetFocus(self,event):
>         self.Panel.SetFocus()
>
>     def pn_OnKeyUp(self,event):
>         key = event.KeyCode()
>         if key == 65:
>             print "Bene"
>
>
> class MyApp(wx.App):
>     def OnInit(self):
>         frame = MyFrame(None, "Notes")
>         frame.Show(True)
>         self.SetTopWindow(frame)
>         return True
>
> app = MyApp(True)
> app.MainLoop()
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.zope.it/cgi-bin/mailman/listinfo/python




More information about the Python mailing list