Corso Python Deltapromo - Lezione 5

1,083 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,083
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
17
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Corso Python Deltapromo - Lezione 5

    1. 1. INTRODUZIONE A WXPYTHON Lezione 5 Paolo Ferretti per DeltapromoURL corso: http://corso-deltapromo.paoloferretti.net/ http://www.paoloferretti.net paolo@paoloferretti.net
    2. 2. COS’È WXPYTHON• Libreria per creare interfacce grafiche• Wrapper per WxWidgets, libreria grafica multi-piattaforma• Implementato come estensione di Python, quindi codice nativo• Open source e cross-platform
    3. 3. COSA POSSO FARE CON WXPYTHON?
    4. 4. FOUNDATION OBJECTS• In una applicazione WxPython ci sono due entità principali • Application Objects • Top Level Window
    5. 5. FOUNDATION OBJECTS
    6. 6. APPLICATION OBJECT• Senza Application Object l’applicazione WxPython non può funzionare• Risponde a tutti gli eventi ignorati dal resto dell’applicazione• Lancia la Top Level Window
    7. 7. APPLICATION OBJECT• Istanza di wx.App o di una sottoclasse• La sua funzione è di lanciare e gestire il main loop• Definisce le proprietà globali dell’applicazione• wx.PySimpleApp velocizza le cose in caso di applicazioni semplici
    8. 8. APPLICATION OBJECT LIFECYCLE• Il lifecycle: • inizia quando un’istanza di wx.App è creata • finisce quando l’ultima finestra è stata chiusa• Non corrisponde obbligatoriamente con l’inizio e la fine dell’esecuzione del programma
    9. 9. APPLICATION OBJECT LIFECYCLE• Il nostro script può eseguire attività prima e dopo la creazione dell’oggetto wx.App• E’ fondamentale che tutta l’attività WxPython rimanga all’interno del ciclo di vita dell’istanza di wx.App
    10. 10. APPLICATION OBJECT
    11. 11. TOP LEVEL WINDOW• Finestra principale• Gestisce le funzioni dell’applicazione• Presenta queste funzioni all’utente
    12. 12. TOP LEVEL WINDOW• Può essere un’istanza di wx.Frame o wx.Dialog• Normalmente è una sotto classe di wx.Frame
    13. 13. DIRIGERE L’OUTPUT• Un normale script dirige l’output su sys.stdout• Si può decidere di far gestire l’output dall’applicazione (default in ambiente Windows)• Il redirect può essere specificato esplicitamente quando si crea un’applicazione • wx.App(redirect=True)
    14. 14. SHUTDOWN APPLICAZIONE• Normalmente l’applicazione viene fermata quando l’ultima top level window viene chiusa • ultima finestra senza parent• Durante lo shutdown wxPython cancella tutte le finestre e libera le risorse • E’ possibile un cleanup personalizzato col metodo OnExit()
    15. 15. SHUTDOWN APPLICAZIONE• Anche se l’applicazione è chiusa chiamando wx.Exit(), il metodo OnExit() viene chiamato• Senon vogliamo chiudere l’applicazione dopo la chiusura dell’ultima applicazione: • SetExitOnFrameDelete(False) • l’applicazione resterà viva fino alla chiamat di wx.Exit()
    16. 16. EVENT HANDLING• La gestione degli eventi è il meccanismo fondamentale in una applicazione wxPython• Una applicazione basata sugli eventi si chiama event driven
    17. 17. COS’È UN EVENTO• Un evento è qualcosa che accade nel sistema e che può essere catturato e gestito dalla nostra applicazione• Gli eventi possono essere di • basso livello: movimento del mouse, pressione di un tasto • alto livello: click su pulsante, selezione su menu
    18. 18. COS’È UN EVENTO• Può essere creato dal sistema operativo• Unaapplicazione wx funziona associando ogni evento ad un pezzo di codice
    19. 19. TERMINOLOGIA DEGLI EVENTI• Event: qualcosa che accade durante l’esecuzione dell’applicazione e che richiede una risposta• Event object: la rappresentazione concreta di un evento in wxPython. Normalmente istanze di wx.Event e sue sottoclassi• Event type: un ID intero che wxPython assegna ad ogni event object. Questo ci dà più informazioni sulla natura di un evento
    20. 20. TERMINOLOGIA DEGLI EVENTI• Event source: l’oggetto wxPython che crea l’evento. Es: pulsante, menu, ecc...• Event driven: programma strutturato per aspettare e rispondere agli eventi• Event queue: lista di eventi già accaduti ma non ancora processati
    21. 21. TERMINOLOGIA DEGLI EVENTI• Event handler: una funzione (o metodo) invocata in risposta ad un evento• Event binder: oggetto wxPython che incapsula le relazioni tra uno specifico widget, uno specifico event type e uno specifico event handler. Tutti gli eventi devono essere registrati con un event binder•
    22. 22. EVENT DRIVENPROGRAMMING
    23. 23. EVENT HANDLING PROCESS
    24. 24. SIZERS• Oggetti per la gestione del layout• Non sono container• Sono algoritmi per la rappresentazione dei widget• Sono tutti sottoclassi di wx.Sizer
    25. 25. SIZER PREDEFINITI IN WXPYTHON• Grid: layout tabellare, ottimo quando i widget sono delle stesse dimensioni• FlexGrid: layout tabellare, ma con widget di dimensioni diverse• GridBag: layout tabellare irregolare. Il più flessibile• Box: elementi allineati su righe orizzontali o verticali• StaticBox: come Box, ma con un title e un riquadro
    26. 26. COME USO UN SIZER• Aggiungere il sizer ad un container usando il metodo SetSizer• Aggiungere i widget al sizer col metodo Add• Abilitareil sizer a calcolare le proprie dimensioni col metodo Fit (opzionale)
    27. 27. CONTROLLI DI BASE• wx.StaticText (label) • wx.SpinCtrl• wx.TextCtrl (text input) • wx.Gauge• wx.Font • wx.CheckBox• wx.Button • wx.RadioButton• wx.ToggleButton • wx.ListBox• wx.Slider • wx.Choice
    28. 28. ALCUNI EVENTI• CloseEvent • MouseEvent• FocusEvent • MoveEvent• IconizeEvent • ScrollWinEvent• KeyEvent • ShowEvent• MaximiseEvent • SizeEvent• MenuEvent • TimerEvent

    ×