Python
Python est un langage interprété très utilisé dans l'Openmoko. Outre sa simplicité, il a pour avantage le fait que l'on puisse directement développer sur le téléphone sans passer par une phase de compilation.
Nous allons essayer dans ces quelques lignes de vous présenter comme créer simplement une application graphique à l'aide de ce langage.
Python permet d'interagir simplement avec le framework de l'Openmoko via FSO, nous verrons cela plus tard ...
Sommaire |
Exemples EFL
Hello World
#!/usr/bin/python import etk #création d'un bouton (not yet on any window) b = etk.Button(label="Hello") #création d'une fenêtre (non visible) dans laquelle nous allons placer le bouton w = etk.Window(title="Hello", child=b) #création d'une fonction simple de callback def hello(target): print 'Hello World' etk.main_quit() #liaison du bouton sur la fonction de callback b.on_clicked(hello) #Affichage de la fenêtre w.show_all() #gestion des évenements etk.main()
D'autres exemples sont disponible ici
Exemples Elementary (SHR)
HelloWorld
#!/usr/bin/python
import elementary
#creation d'une fonction simple de callback
def destroy(target, arg2):
print 'Byebye'
elementary.exit()
elementary.init()
win = elementary.Window("settingsMods", elementary.ELM_WIN_BASIC)
win.destroy = destroy
win.title_set("HelloWorld")
#creation d'une fonction simple de callback
def hello(arg1, arg2):
print 'Helloworld'
elementary.exit()
frame = elementary.Frame(win)
frame.label_set("HelloWorld")
frame.show()
bg = elementary.Background(win)
win.resize_object_add(bg)
bg.size_hint_weight_set(1.0, 1.0)
bg.show()
box0 = elementary.Box(win)
box0.size_hint_weight_set(1.0, 1.0)
win.resize_object_add(box0)
box0.show()
bt = elementary.Button(win)
bt.label_set("HelloWorld")
bt.clicked = hello
bt.size_hint_align_set(-1.0, 0.0)
bt.show()
box0.pack_end(frame)
box0.pack_end(bt)
win.show()
elementary.run()
Problèmes divers
Module not found
Alors que tous les paquets sont bien installés, au lancement de votre programme vous avez le message suivant qui s'affiche :
root@om-gta02:~# helloworld
Traceback (most recent call last):
File "/usr/bin/helloworld", line 4, in <module>
import etk
ImportError: No module named etk
C'est certainement que comme dans mon cas, le module est installé pour python2.5 alors que c'est python2.6 qui est exécuté. Pour y remédier, une solution (pas forcément très clean) est d'utiliser les modules de la 2.5 pour la 2.6 :
ln -s /usr/lib/python2.5/site-packages/etk /usr/lib/python2.6/site-packages/
Faire de même avec tous les modules manquants