SlideShare una empresa de Scribd logo
1 de 28
INTRODUZIONE A
        WXPYTHON
                      Lezione 5
          Paolo Ferretti per Deltapromo
URL corso: http://corso-deltapromo.paoloferretti.net/

            http://www.paoloferretti.net
              paolo@paoloferretti.net
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
COSA POSSO FARE CON
    WXPYTHON?
FOUNDATION OBJECTS


• In   una applicazione WxPython ci sono due entità principali

  • Application   Objects

  • Top   Level Window
FOUNDATION OBJECTS
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
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
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
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
APPLICATION OBJECT
TOP LEVEL WINDOW


• Finestra   principale

• Gestisce   le funzioni dell’applicazione

• Presenta   queste funzioni all’utente
TOP LEVEL WINDOW



• Può   essere un’istanza di wx.Frame o wx.Dialog

• Normalmente    è una sotto classe di wx.Frame
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)
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()
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()
EVENT HANDLING



• La
   gestione degli eventi è il meccanismo fondamentale in una
 applicazione wxPython

• Una   applicazione basata sugli eventi si chiama event driven
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
COS’È UN EVENTO



• Può   essere creato dal sistema operativo

• Unaapplicazione wx funziona associando ogni evento ad un
 pezzo di codice
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
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
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

•
EVENT DRIVEN
PROGRAMMING
EVENT HANDLING PROCESS
SIZERS


• Oggetti   per la gestione del layout

• Non    sono container

• Sono   algoritmi per la rappresentazione dei widget

• Sono   tutti sottoclassi di wx.Sizer
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
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)
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
ALCUNI EVENTI

• CloseEvent            • MouseEvent

• FocusEvent            • MoveEvent

• IconizeEvent          • ScrollWinEvent

• KeyEvent              • ShowEvent

• MaximiseEvent         • SizeEvent

• MenuEvent             • TimerEvent

Más contenido relacionado

Similar a Corso Python Deltapromo - Lezione 5

Wearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchWearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchPaolo Musolino
 
Kivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioKivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioGiuneco S.r.l
 
ios 8 - parte 2 - todo-app - ita
ios 8 - parte 2 - todo-app - itaios 8 - parte 2 - todo-app - ita
ios 8 - parte 2 - todo-app - itaDario Rusignuolo
 
iOS7 - multitasking e dynamics - Daniele Galiotto
iOS7 - multitasking e dynamics - Daniele GaliottoiOS7 - multitasking e dynamics - Daniele Galiotto
iOS7 - multitasking e dynamics - Daniele Galiottomokapp
 
Cuckoo Sandbox: Automated malware analysis
Cuckoo Sandbox: Automated malware analysisCuckoo Sandbox: Automated malware analysis
Cuckoo Sandbox: Automated malware analysisjekil
 
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#DotNetCampus
 
Sencha touch: panoramica e orientamento sul codice
Sencha touch: panoramica e orientamento sul codiceSencha touch: panoramica e orientamento sul codice
Sencha touch: panoramica e orientamento sul codiceGiuseppe Toto
 
Mob03 what's new in windows phone
Mob03   what's new in windows phoneMob03   what's new in windows phone
Mob03 what's new in windows phoneDotNetCampus
 
Pregi e difetti dello sviluppo di videogames con Unreal Development Kit: Stea...
Pregi e difetti dello sviluppo di videogames con Unreal Development Kit: Stea...Pregi e difetti dello sviluppo di videogames con Unreal Development Kit: Stea...
Pregi e difetti dello sviluppo di videogames con Unreal Development Kit: Stea...Codemotion
 
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...Codemotion
 
ASP.NET AND Azure Function
ASP.NET AND Azure FunctionASP.NET AND Azure Function
ASP.NET AND Azure FunctionLuca Congiu
 
Applicazioni web con ASP.NET Owin e Katana
Applicazioni web con ASP.NET Owin e KatanaApplicazioni web con ASP.NET Owin e Katana
Applicazioni web con ASP.NET Owin e KatanaNicolò Carandini
 
Push Notification, Live Tile e Background Agent
Push Notification, Live Tile e Background AgentPush Notification, Live Tile e Background Agent
Push Notification, Live Tile e Background AgentDomusDotNet
 
Csp@scuola smarttv corso1
Csp@scuola smarttv corso1Csp@scuola smarttv corso1
Csp@scuola smarttv corso1CSP Scarl
 

Similar a Corso Python Deltapromo - Lezione 5 (20)

Wearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchWearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple Watch
 
Kivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioKivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele Gaggio
 
ios 8 - parte 2 - todo-app - ita
ios 8 - parte 2 - todo-app - itaios 8 - parte 2 - todo-app - ita
ios 8 - parte 2 - todo-app - ita
 
2007 Py05 gtk
2007 Py05 gtk2007 Py05 gtk
2007 Py05 gtk
 
iOS7 - multitasking e dynamics - Daniele Galiotto
iOS7 - multitasking e dynamics - Daniele GaliottoiOS7 - multitasking e dynamics - Daniele Galiotto
iOS7 - multitasking e dynamics - Daniele Galiotto
 
Cuckoo Sandbox: Automated malware analysis
Cuckoo Sandbox: Automated malware analysisCuckoo Sandbox: Automated malware analysis
Cuckoo Sandbox: Automated malware analysis
 
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
 
Sencha touch: panoramica e orientamento sul codice
Sencha touch: panoramica e orientamento sul codiceSencha touch: panoramica e orientamento sul codice
Sencha touch: panoramica e orientamento sul codice
 
Xamarin forms
Xamarin formsXamarin forms
Xamarin forms
 
iOS_Course_11
iOS_Course_11iOS_Course_11
iOS_Course_11
 
iOS_Course_8
iOS_Course_8iOS_Course_8
iOS_Course_8
 
Mob03 what's new in windows phone
Mob03   what's new in windows phoneMob03   what's new in windows phone
Mob03 what's new in windows phone
 
VS Package @ CD2008
VS Package @ CD2008VS Package @ CD2008
VS Package @ CD2008
 
Pregi e difetti dello sviluppo di videogames con Unreal Development Kit: Stea...
Pregi e difetti dello sviluppo di videogames con Unreal Development Kit: Stea...Pregi e difetti dello sviluppo di videogames con Unreal Development Kit: Stea...
Pregi e difetti dello sviluppo di videogames con Unreal Development Kit: Stea...
 
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
 
ASP.NET AND Azure Function
ASP.NET AND Azure FunctionASP.NET AND Azure Function
ASP.NET AND Azure Function
 
Applicazioni web con ASP.NET Owin e Katana
Applicazioni web con ASP.NET Owin e KatanaApplicazioni web con ASP.NET Owin e Katana
Applicazioni web con ASP.NET Owin e Katana
 
Push Notification, Live Tile e Background Agent
Push Notification, Live Tile e Background AgentPush Notification, Live Tile e Background Agent
Push Notification, Live Tile e Background Agent
 
Csp@scuola smarttv corso1
Csp@scuola smarttv corso1Csp@scuola smarttv corso1
Csp@scuola smarttv corso1
 
BBox e vaadin7
BBox e vaadin7BBox e vaadin7
BBox e vaadin7
 

Más de Paolo Ferretti

Multi container applications with docker
Multi container applications with dockerMulti container applications with docker
Multi container applications with dockerPaolo Ferretti
 
Tavolo territoriale del servizio ferroviario nel Quadrante Sud
Tavolo territoriale del servizio ferroviario nel Quadrante SudTavolo territoriale del servizio ferroviario nel Quadrante Sud
Tavolo territoriale del servizio ferroviario nel Quadrante SudPaolo Ferretti
 
Corso Python Deltapromo - Lezione 3
Corso Python Deltapromo - Lezione 3Corso Python Deltapromo - Lezione 3
Corso Python Deltapromo - Lezione 3Paolo Ferretti
 
Corso Python Deltapromo lezione 1
Corso Python Deltapromo   lezione 1Corso Python Deltapromo   lezione 1
Corso Python Deltapromo lezione 1Paolo Ferretti
 
Corso Python Deltapromo - Lezione 2
Corso Python Deltapromo - Lezione 2Corso Python Deltapromo - Lezione 2
Corso Python Deltapromo - Lezione 2Paolo Ferretti
 

Más de Paolo Ferretti (6)

Multi container applications with docker
Multi container applications with dockerMulti container applications with docker
Multi container applications with docker
 
OpenStreetMap
OpenStreetMapOpenStreetMap
OpenStreetMap
 
Tavolo territoriale del servizio ferroviario nel Quadrante Sud
Tavolo territoriale del servizio ferroviario nel Quadrante SudTavolo territoriale del servizio ferroviario nel Quadrante Sud
Tavolo territoriale del servizio ferroviario nel Quadrante Sud
 
Corso Python Deltapromo - Lezione 3
Corso Python Deltapromo - Lezione 3Corso Python Deltapromo - Lezione 3
Corso Python Deltapromo - Lezione 3
 
Corso Python Deltapromo lezione 1
Corso Python Deltapromo   lezione 1Corso Python Deltapromo   lezione 1
Corso Python Deltapromo lezione 1
 
Corso Python Deltapromo - Lezione 2
Corso Python Deltapromo - Lezione 2Corso Python Deltapromo - Lezione 2
Corso Python Deltapromo - Lezione 2
 

Corso Python Deltapromo - Lezione 5

  • 1. INTRODUZIONE A WXPYTHON Lezione 5 Paolo Ferretti per Deltapromo URL corso: http://corso-deltapromo.paoloferretti.net/ http://www.paoloferretti.net paolo@paoloferretti.net
  • 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. COSA POSSO FARE CON WXPYTHON?
  • 4. FOUNDATION OBJECTS • In una applicazione WxPython ci sono due entità principali • Application Objects • Top Level Window
  • 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. 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. 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. 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
  • 11. TOP LEVEL WINDOW • Finestra principale • Gestisce le funzioni dell’applicazione • Presenta queste funzioni all’utente
  • 12. TOP LEVEL WINDOW • Può essere un’istanza di wx.Frame o wx.Dialog • Normalmente è una sotto classe di wx.Frame
  • 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. 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. 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. EVENT HANDLING • La gestione degli eventi è il meccanismo fondamentale in una applicazione wxPython • Una applicazione basata sugli eventi si chiama event driven
  • 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. COS’È UN EVENTO • Può essere creato dal sistema operativo • Unaapplicazione wx funziona associando ogni evento ad un pezzo di codice
  • 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. 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. 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 •
  • 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. 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. 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. 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. ALCUNI EVENTI • CloseEvent • MouseEvent • FocusEvent • MoveEvent • IconizeEvent • ScrollWinEvent • KeyEvent • ShowEvent • MaximiseEvent • SizeEvent • MenuEvent • TimerEvent

Notas del editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n