http://www.zetcode.com/wxpython/
Però dopo menu e toolbar il tutorial ha una pagina chiamata "Layout Management", gestione del layout che non dice, secondo me, nulla di nuovo. O meglio, è troppo specifico e sono cose che se proprio servono si vanno a vedere, ma solo se e quando diventano indispensabili. Un'altro motivo per saltarlo è che gli esempi dovrebbero essere non troppo lunghi, in modo da poterli esaminare senza investire troppo tempo. Almeno io quando vedo più di tot righe di codice tendo a scoraggiarmi.
Per cui saltiamo alla gestione degli eventi. Il primo esempio (ebbene sì, lo ricopio così com'è!) ci mostra un paio di cose: 1) come inserire un testo in una posizione predefinita; 2) come gestire un evento, in questo caso wx.EVT_MOVE, attivato quando spostiamo la finestra. A proposito (o meglio a sproposito): quando ho parlato della toolbar BB, senza barra del tiolo mi sono dimenticato di dire che tenendo premuto il tasto Alt riuscite a spostare la finestra come se agiste sulla barra del titolo (lo so che lo sapete, sono io che devo ricordarmelo).
In ogni caso l'esempio può essere di una qualche utilità: stabilire la posizione delle finestre, con pos o SetPosition(), come abbiamo visto negli esempi precedenti (per BB è alla riga 75). Ecco quindi il codice di move.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import wx
class Example(wx.Frame):
def __init__(self, *args, **kw):
super(Example, self).__init__(*args, **kw)
self.InitUI()
def InitUI(self):
wx.StaticText(self, label='x:', pos=(10,10))
wx.StaticText(self, label='y:', pos=(10,30))
self.st1 = wx.StaticText(self, label='', pos=(30, 10))
self.st2 = wx.StaticText(self, label='', pos=(30, 30))
self.Bind(wx.EVT_MOVE, self.OnMove)
self.SetSize((250, 180))
self.SetTitle('Move event')
self.Centre()
self.Show(True)
def OnMove(self, e):
x, y = e.GetPosition()
self.st1.SetLabel(str(x))
self.st2.SetLabel(str(y))
def main():
ex = wx.App()
Example(None)
ex.MainLoop()
if __name__ == '__main__':
main()
È possibile intercettare e gestire tantissimi eventi. Ho modificato l'ultimo esempio (key.py) in modo da poter visualizzarli (quasi) tutti, alcuni vengono intercettati dal sistema operativo. L'elenco completo degli eventi lo trovate qui#!/usr/bin/python
# -*- coding: utf-8 -*-
import wx
class Example(wx.Frame):
def __init__(self, *args, **kw):
super(Example, self).__init__(*args, **kw)
self.InitUI()
def InitUI(self):
pnl = wx.Panel(self)
pnl.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
pnl.SetFocus()
self.SetSize((250, 180))
self.SetTitle('Key event')
self.Centre()
self.Show(True)
def OnKeyDown(self, e):
key = e.GetKeyCode()
print key
if key == wx.WXK_ESCAPE:
ret = wx.MessageBox('Are you sure to quit?', 'Question',
wx.YES_NO | wx.NO_DEFAULT, self)
if ret == wx.YES:
self.Close()
if key == wx.WXK_SPACE:
x, y = self.GetPosition()
if x > 800:
x = 50
y = 50
self.SetPosition((x + 100, y + 100))
if key == wx.WXK_RETURN:
print "enter"
def main():
ex = wx.App()
Example(None)
ex.MainLoop()
if __name__ == '__main__':
main()
Si sappia, Juhan è raffreddato! Non ha mandato neanche una foto! Vuol dire che per questa volta provvedo io. Così impara!! :)
L'indice di Mission Python lo trovate qui.
Alla prossima! :)
@Bit3Lux: LOL!!!11undici!
RispondiElimina