際際滷

際際滷Share a Scribd company logo
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 gra鍖che

 Wrapper     per WxWidgets, libreria gra鍖ca 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 lapplicazione WxPython non pu嘆
 funzionare

 Risponde   a tutti gli eventi ignorati dal resto dellapplicazione

 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

 De鍖nisce    le propriet globali dellapplicazione

 wx.PySimpleApp      velocizza le cose in caso di applicazioni
 semplici
APPLICATION OBJECT
                   LIFECYCLE

 Il   lifecycle:

    inizia   quando unistanza di wx.App 竪 creata

    鍖nisce    quando lultima 鍖nestra 竪 stata chiusa

 Non   corrisponde obbligatoriamente con linizio e la 鍖ne
  dellesecuzione del programma
APPLICATION OBJECT
              LIFECYCLE


 Il
   nostro script pu嘆 eseguire attivit prima e dopo la creazione
  delloggetto wx.App

 E fondamentale    che tutta lattivit WxPython rimanga
  allinterno del ciclo di vita dellistanza di wx.App
APPLICATION OBJECT
TOP LEVEL WINDOW


 Finestra   principale

 Gestisce   le funzioni dellapplicazione

 Presenta   queste funzioni allutente
TOP LEVEL WINDOW



 Pu嘆   essere unistanza di wx.Frame o wx.Dialog

 Normalmente    竪 una sotto classe di wx.Frame
DIRIGERE LOUTPUT

 Un   normale script dirige loutput su sys.stdout

 Si pu嘆 decidere di far gestire loutput dallapplicazione (default
  in ambiente Windows)

 Il
   redirect pu嘆 essere speci鍖cato esplicitamente quando si crea
  unapplicazione

    wx.App(redirect=True)
SHUTDOWN APPLICAZIONE

 Normalmente  lapplicazione viene fermata quando lultima top
 level window viene chiusa

  ultima   鍖nestra senza parent

 Durante   lo shutdown wxPython cancella tutte le 鍖nestre e
 libera le risorse

  E possibile   un cleanup personalizzato col metodo OnExit()
SHUTDOWN APPLICAZIONE

 Anche
      se lapplicazione 竪 chiusa chiamando wx.Exit(), il
 metodo OnExit() viene chiamato

 Senon vogliamo chiudere lapplicazione dopo la chiusura
 dellultima applicazione:

  SetExitOnFrameDelete(False)

  lapplicazione   rester viva 鍖no 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 lesecuzione
 dellapplicazione 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: loggetto wxPython che crea levento. 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 speci鍖co widget, uno speci鍖co event type e uno
    speci鍖co 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湛 鍖essibile

 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.際際滷r                     wx.Choice
ALCUNI EVENTI

 CloseEvent             MouseEvent

 FocusEvent             MoveEvent

 IconizeEvent           ScrollWinEvent

 KeyEvent               ShowEvent

 MaximiseEvent          SizeEvent

 MenuEvent              TimerEvent

More Related Content

Similar to 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
Paolo Musolino
Kivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioKivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele Gaggio
Giuneco 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 - ita
Dario Rusignuolo
iOS7 - multitasking e dynamics - Daniele Galiotto
iOS7 - multitasking e dynamics - Daniele GaliottoiOS7 - multitasking e dynamics - Daniele Galiotto
iOS7 - multitasking e dynamics - Daniele Galiotto
mokapp
Cuckoo Sandbox: Automated malware analysis
Cuckoo Sandbox: Automated malware analysisCuckoo Sandbox: Automated malware analysis
Cuckoo Sandbox: Automated malware analysis
jekil
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 codice
Giuseppe Toto
Xamarin forms
Xamarin formsXamarin forms
Xamarin forms
Alessio Iafrate
iOS_Course_11
iOS_Course_11iOS_Course_11
iOS_Course_11
Dario Pizzuto
iOS_Course_8
iOS_Course_8iOS_Course_8
iOS_Course_8
Dario Pizzuto
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
DotNetCampus
VS Package @ CD2008
VS Package @ CD2008VS Package @ CD2008
VS Package @ CD2008
Mauro Servienti
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
ASP.NET AND Azure Function
ASP.NET AND Azure FunctionASP.NET AND Azure Function
ASP.NET AND Azure Function
Luca Congiu
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
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
Nicol嘆 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 Agent
DomusDotNet
Csp@scuola smarttv corso1
Csp@scuola smarttv corso1Csp@scuola smarttv corso1
Csp@scuola smarttv corso1
CSP Scarl
BBox e vaadin7
BBox e vaadin7BBox e vaadin7
BBox e vaadin7
Federico Russo
Wearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchWearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple Watch
Paolo Musolino
Kivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele GaggioKivy Python Framework - di Gioele Gaggio
Kivy Python Framework - di Gioele Gaggio
Giuneco 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 - ita
Dario Rusignuolo
iOS7 - multitasking e dynamics - Daniele Galiotto
iOS7 - multitasking e dynamics - Daniele GaliottoiOS7 - multitasking e dynamics - Daniele Galiotto
iOS7 - multitasking e dynamics - Daniele Galiotto
mokapp
Cuckoo Sandbox: Automated malware analysis
Cuckoo Sandbox: Automated malware analysisCuckoo Sandbox: Automated malware analysis
Cuckoo Sandbox: Automated malware analysis
jekil
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 codice
Giuseppe 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 phone
DotNetCampus
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
ASP.NET AND Azure Function
ASP.NET AND Azure FunctionASP.NET AND Azure Function
ASP.NET AND Azure Function
Luca Congiu
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
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
Nicol嘆 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 Agent
DomusDotNet
Csp@scuola smarttv corso1
Csp@scuola smarttv corso1Csp@scuola smarttv corso1
Csp@scuola smarttv corso1
CSP Scarl

More from Paolo Ferretti (6)

Multi container applications with docker
Multi container applications with dockerMulti container applications with docker
Multi container applications with docker
Paolo Ferretti
OpenStreetMap
OpenStreetMapOpenStreetMap
OpenStreetMap
Paolo 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 Sud
Paolo Ferretti
Corso Python Deltapromo - Lezione 3
Corso Python Deltapromo - Lezione 3Corso Python Deltapromo - Lezione 3
Corso Python Deltapromo - Lezione 3
Paolo Ferretti
Corso Python Deltapromo lezione 1
Corso Python Deltapromo   lezione 1Corso Python Deltapromo   lezione 1
Corso Python Deltapromo lezione 1
Paolo Ferretti
Corso Python Deltapromo - Lezione 2
Corso Python Deltapromo - Lezione 2Corso Python Deltapromo - Lezione 2
Corso Python Deltapromo - Lezione 2
Paolo Ferretti
Multi container applications with docker
Multi container applications with dockerMulti container applications with docker
Multi container applications with docker
Paolo 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 Sud
Paolo Ferretti
Corso Python Deltapromo - Lezione 3
Corso Python Deltapromo - Lezione 3Corso Python Deltapromo - Lezione 3
Corso Python Deltapromo - Lezione 3
Paolo Ferretti
Corso Python Deltapromo lezione 1
Corso Python Deltapromo   lezione 1Corso Python Deltapromo   lezione 1
Corso Python Deltapromo lezione 1
Paolo Ferretti
Corso Python Deltapromo - Lezione 2
Corso Python Deltapromo - Lezione 2Corso Python Deltapromo - Lezione 2
Corso Python Deltapromo - Lezione 2
Paolo Ferretti

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 gra鍖che Wrapper per WxWidgets, libreria gra鍖ca 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 lapplicazione WxPython non pu嘆 funzionare Risponde a tutti gli eventi ignorati dal resto dellapplicazione 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 De鍖nisce le propriet globali dellapplicazione wx.PySimpleApp velocizza le cose in caso di applicazioni semplici
  • 8. APPLICATION OBJECT LIFECYCLE Il lifecycle: inizia quando unistanza di wx.App 竪 creata 鍖nisce quando lultima 鍖nestra 竪 stata chiusa Non corrisponde obbligatoriamente con linizio e la 鍖ne dellesecuzione del programma
  • 9. APPLICATION OBJECT LIFECYCLE Il nostro script pu嘆 eseguire attivit prima e dopo la creazione delloggetto wx.App E fondamentale che tutta lattivit WxPython rimanga allinterno del ciclo di vita dellistanza di wx.App
  • 11. TOP LEVEL WINDOW Finestra principale Gestisce le funzioni dellapplicazione Presenta queste funzioni allutente
  • 12. TOP LEVEL WINDOW Pu嘆 essere unistanza di wx.Frame o wx.Dialog Normalmente 竪 una sotto classe di wx.Frame
  • 13. DIRIGERE LOUTPUT Un normale script dirige loutput su sys.stdout Si pu嘆 decidere di far gestire loutput dallapplicazione (default in ambiente Windows) Il redirect pu嘆 essere speci鍖cato esplicitamente quando si crea unapplicazione wx.App(redirect=True)
  • 14. SHUTDOWN APPLICAZIONE Normalmente lapplicazione viene fermata quando lultima top level window viene chiusa ultima 鍖nestra senza parent Durante lo shutdown wxPython cancella tutte le 鍖nestre e libera le risorse E possibile un cleanup personalizzato col metodo OnExit()
  • 15. SHUTDOWN APPLICAZIONE Anche se lapplicazione 竪 chiusa chiamando wx.Exit(), il metodo OnExit() viene chiamato Senon vogliamo chiudere lapplicazione dopo la chiusura dellultima applicazione: SetExitOnFrameDelete(False) lapplicazione rester viva 鍖no 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 lesecuzione dellapplicazione 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: loggetto wxPython che crea levento. 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 speci鍖co widget, uno speci鍖co event type e uno speci鍖co 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湛 鍖essibile 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.際際滷r wx.Choice
  • 28. ALCUNI EVENTI CloseEvent MouseEvent FocusEvent MoveEvent IconizeEvent ScrollWinEvent KeyEvent ShowEvent MaximiseEvent SizeEvent MenuEvent TimerEvent

Editor's Notes