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

whamoo whamoo
Ven 19 Nov 2004 15:16:45 CET


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()




More information about the Python mailing list