Package

Oggi vedremo come strutturare il nostro prima package.

In pratica dobbiamo creare una directory a cui assegneremo il nome myWidg ed inserire al suo interno i nostri files.

  • my00init.py
  • myWind.py
  • myApp.py

Inoltre creiamo un file vuoto __init__.py che indica a python di gestire questa directory come un package.

Bene torniamo su di un livello e copiamo anche qui my00init.py

Modifichiamo solo questo file in modo da attivare il caricamento delle nostre librerie nella root di lavoro.

if 1:
        insLib(myRoot+'/myWidg',True)

Creiamo la nostra applicazione di partenza.

l01_startGtk.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
""" lista degli oggetti definiti:

    - 
"""

myRev = "(rev.150823)"
#-----------------------------------------------------------------------------
# Modules
#-----------------------------------------------------------------------------
from my00init import *

#-----------------------------------------------------------------------------
# myModules
#-----------------------------------------------------------------------------
from myApp import MyApp

#-----------------------------------------------------------------------------
# myDefines
#-----------------------------------------------------------------------------

#-----------------------------------------------------------------------------
# myClass
#-----------------------------------------------------------------------------

#-----------------------------------------------------------------------------
# myTry
#-----------------------------------------------------------------------------
def myTry01():
    """ + window (self)                                                   
    "conf                                       .------------------------.
    "0001 - aBox            (h application)     | application            |
    "0002   - gBox            (h global)        |   .--------------------.
    "0004   - mBox            (v main)          |   | g | m | menu       |
    "0008     - uBox            (h menu)        |   | l | a .------------.
    "0010     - bBox            (v body)        |   | o | i | body       |
    "0020     - sBox            (h status)      |   | b | n |            |
    "                                           |   | a |   .------------.
    "                                           |   | l |   | status     |
    "                                           .---.---.----------------.
    """ 
    # istanza l'applicazione 
    self = MyApp(width=400, height=400, title="myApp", 
                    center=True, color="#bbb", conf=0x003f, show=1)

#-----------------------------------------------------------------------------
# Main
#-----------------------------------------------------------------------------
if __name__ == "__main__":

    # test arguments
    if len(sys.argv) == 1:
        # no arguments (scelgo io)
        choi = 1
    else:
        # get first argument (scelta esterna)
        choi = int(sys.argv[1])

    if choi == 1:
        # draw Applications (MyApp)
        myTry01()
    elif choi == 2:
        # draw Applications (MyApp)
        myTry01()

    # avvia applicazione
    Gtk.main()

Come potete vedere dal codice non c’ è nulla di nuovo ma è servito solo come esercizio per capire come usare il package myWidg.

Quello che è cambiato è il modo di importare i nostri moduli.

#-----------------------------------------------------------------------------
from my00init import *

#-----------------------------------------------------------------------------
from myApp import MyApp

Alla fine dovremo ritrovarci con la seguente struttura:

l01_startGtk.py
my00init.py
myWidg/
  __init__.py
  my00init.py
  myWind.py
  myApp.py

links:

Avvertimento

Durante il download, non sono riuscito a capire il motivo, i nomi potrebbero cambiare. Dovete rinominarli come da struttura sopra!

../../../_images/myApp1.png

Se proviamo ad avviare lo script l01_startGtk.py rivediamo la nostra applicazione.

Saluti

Nel prossimo post inizieremo a creare il template dei contenitori.

Ciao alla prossima. (stay tune!)