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

More Related Content

PDF
Matplotlib: Corso Python avanzato - ForDataScientist 01
PDF
Reportlab Corso Python avanzato - ForDataScientist 01
KEY
Corso Python Deltapromo - Lezione 4
PDF
ForDataScientist - Python base parte1
PDF
A 12 hour workshop on Introduction to Python
PDF
Workshop on Programming in Python - day II
PDF
Learn 90% of Python in 90 Minutes
PDF
Progettazione per Apple Watch - Todi Appy Days 2015
Matplotlib: Corso Python avanzato - ForDataScientist 01
Reportlab Corso Python avanzato - ForDataScientist 01
Corso Python Deltapromo - Lezione 4
ForDataScientist - Python base parte1
A 12 hour workshop on Introduction to Python
Workshop on Programming in Python - day II
Learn 90% of Python in 90 Minutes
Progettazione per Apple Watch - Todi Appy Days 2015

Similar to Corso Python Deltapromo - Lezione 5 (20)

PDF
Wearable Lab: Progettazione per Apple Watch
PPTX
Kivy Python Framework - di Gioele Gaggio
PPTX
ios 8 - parte 2 - todo-app - ita
PDF
2007 Py05 gtk
PPT
iOS7 - multitasking e dynamics - Daniele Galiotto
PDF
Cuckoo Sandbox: Automated malware analysis
PPTX
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
PDF
Sencha touch: panoramica e orientamento sul codice
PPTX
Xamarin forms
PDF
iOS_Course_11
PDF
iOS_Course_8
PPTX
Mob03 what's new in windows phone
PPTX
VS Package @ CD2008
PPTX
Pregi e difetti dello sviluppo di videogames con Unreal Development Kit: Stea...
PPTX
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
PPTX
ASP.NET AND Azure Function
PPTX
Applicazioni web con ASP.NET Owin e Katana
PPTX
presentazione utile a capire unity per cucinare
PPTX
Push Notification, Live Tile e Background Agent
PDF
Csp@scuola smarttv corso1
Wearable Lab: Progettazione per Apple Watch
Kivy Python Framework - di Gioele Gaggio
ios 8 - parte 2 - todo-app - ita
2007 Py05 gtk
iOS7 - multitasking e dynamics - Daniele Galiotto
Cuckoo Sandbox: Automated malware analysis
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
Sencha touch: panoramica e orientamento sul codice
Xamarin forms
iOS_Course_11
iOS_Course_8
Mob03 what's new in windows phone
VS Package @ CD2008
Pregi e difetti dello sviluppo di videogames con Unreal Development Kit: Stea...
DomusDotNet, DotNetCode & dotNET{podcast} Meetup - Serverless Computing - Gio...
ASP.NET AND Azure Function
Applicazioni web con ASP.NET Owin e Katana
presentazione utile a capire unity per cucinare
Push Notification, Live Tile e Background Agent
Csp@scuola smarttv corso1
Ad

More from Paolo Ferretti (6)

PDF
Multi container applications with docker
PDF
OpenStreetMap
PDF
Tavolo territoriale del servizio ferroviario nel Quadrante Sud
KEY
Corso Python Deltapromo - Lezione 3
KEY
Corso Python Deltapromo lezione 1
KEY
Corso Python Deltapromo - Lezione 2
Multi container applications with docker
OpenStreetMap
Tavolo territoriale del servizio ferroviario nel Quadrante Sud
Corso Python Deltapromo - Lezione 3
Corso Python Deltapromo lezione 1
Corso Python Deltapromo - Lezione 2
Ad

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

Editor's Notes