PyS60 Uygulama Gelişimi – 2

Konu ile ilgili bir önceki yazımda uygulama yapısına bir göz atmıştık. Bu sefer bu yapının menü gibi bölümlerini inceleyeceğiz. Bilgisayar dünyasında yazılan çoğu uygulamada menüleri kullanmışsınızdır. Oyunları açtığınızda karşınıza çıkan bir menüdür, benim gibi firefox kullanıyorsanız sayfanızın üstünde menüler vardır. Windows kullananların “Başlat” menüsü vardır.Başlı başına bir sistem olan Symbian’da yazdığınız uygulamalarında birer menüye sahip olması kaçınılamaz bir durumdur.

PyS60 ile menüleri geliştirirken python’un tüp özelliğini kullanacağız. Her zaman dediğim gibi bu özelliği bilmeyen arkadaşlar çeşitli kaynaklardan araştırabilir ve tüpün ne olduğu öğrenebilirler, bu blogu eski versiyonundan beri takip edenler varsa onlar daha önce yazdığım veri çeşitleri konularını okumuş ve tüp bilgisine nail olmuşlardır 🙂

Şimdi bir uygulama yazalım ve içine bir menü yerleştirelim uygulamayı oldukça ufaltıcam; menüyle ilgilenelim:


import appuifw, e32

def selamlar():
appuifw.note(u"Selamlar size!")
def gitburdan():
appuifw.note(u"sevmiyorum seni git burdan!)
def quit():
print "Çıkış bu tarafta, defol!"
app_lock.signal()

appuifw.app.exit_key_handler = quit
appuifw.app.title = "Garipbirdurum"
appuifw.app.menu = [(u"bu bir tüp", selamlar),(u"başlık ve fonksiyon", gitburdan)]

app_lock = e32.Ao_lock()
app_lock.wait()

Bir önceki yazımızda benzer bir uygulama yazmıştık burada ekstradan menü seçeneği kullandık. Gördüğünüz gibi mesaj-fonksiyon şeklinde menülerimizi oluşturuyoruz. Daha önce bahsetmediğim sekmeler(tabs) bölümüde buna benzer bir gelişim sürecinde kullanılmakta orada yapmanız gereken appuifw.app.set tabs() fonksiyonunu kullanmak. Bu arada menü için bir kaç not belirteyim.
(başlık, callback) Bu normal menü
(başlık, ((title, callback)[… ])) Bu alt menü oluştururken kullanılıyor. (Kendiniz deneyin bakalım yapabilecekmisiniz)
Ekranın ayarlarınıda uygulamanız içersinde değiştirebilirsiniz bunun için aşağıdaki seçeneklerden birini uygulamanıza yerleştirmeniz gerekir. Daha fazla yapı öğesi için PyS60 dökümanına bakınız sonraki konularda belki başka yapı özelliklerini kullanırım.
appuifw.app.screen=’normal’ # (normal ekran, başlık, tuşlar…)
appuifw.app.screen=’large’ # (tuşlar gözükür)
appuifw.app.screen=’full’ # (full ekran)

Görüşmek dileğiyle, iyi bayramlar.

Python 3.0

Python 3.0 diğer adıyla Python 3000 çıkmadan çok önce kullanıcıları ikiye bölmüştü. Bir kısım kullanıcılar değişikliklerin artık bir zorunluluk olduğunu savunurken diğer kesim geri uyumlu olmamasından dolayı büyük sorunlar getireceğini düşünmekte. İki kesiminde haklı olduğu noktalar var; 3.0 ile birlikte bir çok geliştirici kodlarını yeniden düzenlemek ve 3.0’a uymak için daha çok çalışmak zorunda kalacak. Düşünün bir uygulama yazıyorsunuz ve bu uygulama bir çok farklı kütüphane kullanıyor ve 3.0 ile birlikte bu kütüphanelerin büyük kısmı artık işinize yaramıyor yaramasa bile yeniden düzenlenmeleri gerekiyor ve haliyle bu büyük bir zaman kaybına neden oluyor.

Diğer tarafta Guido van Rossum’un önderliğinde bir grup geliştirici dilin gelişimine devam etmesi açısından bu versiyonun büyük bir stratejik hamle olduğu görüşünde. Onları destekleyen argümanların başında Python 2.x’in hala kullanımda olması ve 3.0’ın nimetlerinden yararlanmak istemezseniz var olan uygulamarda bir değişikliğe gerek olmadığı geliyor.

Benim açımdan olaya bakarsak, unicode sorunun çözümü işlerimi çok kolaylaştıracak. Gelişimin önünde ki engeller kaldırılmalıdır. Bir çok gereksiz şeyin kaldırılması Python’u daha tutarlı bir dil haline getirmiştir. Uzun dönemli performans kısa dönemli uyuma tercih edilmiştir ve bu çok doğru bir karardır! Kütüphanelerin dönüşümü zaman alabilir ama fazla sorun çıkmadan bu işlemin tamamlanacağını ve herkesin 3.0’a geçeceğini göreceğiz.

Evet, ben geçtim…

Python 3.0 Çıktı!


Uzun süreden beri bekliyorduk çıkmasını. Eski versiyonları geriden desteklemesi yok bir çok değişiklikle birlikte geldi bu yüzden yeni bir python ile karşı karşıyayız. Gözüme ilk çarpan artık print ifadesinin tamamen bir fonksiyon olması. print şeklinde değil print() şeklinde kullanacaz.
PyS60 yazı dizisinde kullandığımız u”….” şeklinde unicode ifadeleri artık kullanamıyoruz(standart olarak utf-8 oldu) bir çok eski modül silindi, bazılarının ismi değişti. Kütüphanelerin bir kısmı paketler olarak birleştirildi…

Python 3.0 ile gelen yeniliklerin tam listesini resmi siteden öğrenebilirsiniz.
Python 3.0’ı indirmek için bu adresi kullanabilirsiniz.

Hayırlı Olsun!

PyS60 Uygulama Gelişimi – 1

Başlamadan önce python ile fonksiyon kullanımı konusunda bilgi edinmenizi öneririm. Modüler programcılığın getirdiği kolaylıkları sonuna kadar kullanacağız.

Önceki yazılarımda aslında yaptığımız her bir örnek sonuçta bir uygulamaydı. Burada bu uygulamaları telefonun yapısına adapte etmeye başlayacaz ve yavaş yavaş telefonun özelliklerini kullanacaz. S60 serisi telefon kullanan arkadaşlar telefondaki uygulama yapısı ile sürekli karşılaşmaktalar gelin gözümüzde canlandıralım.(yada yukarı bakın :D)

Başlık – appuifw.app.title
Bildiğiniz uygulamanın başlık alanıdır, hemen altında sekmeler vardır.
Gövde – appuifw.app.body
Uygulamanın ortasındaki geniş alan gövdedir. İçersinde kullanıcı arayüzünde kullandığımız çeşitli uygulamalar olabilir örneğin query(), note() fonksiyonlarındaki örnekler.
Menü – appuifw.app.menu
Sol alt köşede menü öğesi vardır
Çıkış – appuifw.app.exit_key_handler
çıkış değişkeni

Şimdi bir örnek yazalım ve bu özelliklerden bazılarını kullanalım.


import appuifw, e32

def quit():
print"Çıkış tuşuna basıldı"
app_lock.signal()

appuifw.app.exit_key_handler = quit
appuifw.app.title = u"ilk uygulama"
appuifw.note(u"uygulama şuan çalışıyor")

app_lock = e32.Ao_lock()
app_lock.wait()
print "uygulamadan çıkıldı"

Bu sefer appuifw’nin yanında e32 modülünüde import ettik. Bu modül düşük seviyeli telefon fonksiyonlarını içerir. quit isimli bir çıkış fonksiyonu tanımladık ardından başlığı ve uygulamada görüntülenecek yolu yazdık. İlk önce fonksiyonları incelemenizi bu yüzden istemiştim çünkü burada çıkış işini bir fonksiyon tanımlayarak yaptık. Pythona hangi fonksiyonun çıkış işini yaptığını exit_key_handler değişkenini quit fonksiyonunun ismiyle eşitleyerek gösterdik. PyS60 da böyle spesifik işleri yapan fonksiyonlara geri çağırma fonksiyonları deniyor(callback) ben ingilizce ifadesini kullanacam. Şimdi neden e32 modülünü yükledik onu açıklıyayım. Normalde bir kod yazdığınızda python satır satır ilerler ve sonunda hepsini işleyip uygulamayı kapatır. Buradaki örnekte biz kullanıcı istediğinde çıkmasını istiyoruz o zamana kadar program beklemede kalmalı. İşte bu yüzden wait() fonksiyonu ile uygulamayı beklemeye almış oluyoruz. signal() fonksiyonu gelene kadar bu şekilde beklemede kalır biz basit bir uygulama yazdığımızdan bu signal fonksiyonunu quit fonksiyonun içine yerleştirdik. wait() kullanılmadan neler olacağını silip görebilirsiniz 🙂 Bir sonraki yazıda menü fonksiyonlarından devam edecez.

Proje Gelişiminde İletişimin Rolü

Sevgili Birol ile ben geçen gece çeşitli projeler hakkında konuşma fırsatı bulduk. Önceki yazılarımda bahsettiğim planlarımın bir kısmı bu sohbetin konusuydu. Sohbetimizi önce görüntülü konuşma şeklinde yaptık, ooVoo programının kaydetme seçeneğini denedik, sonra benim internet bağlantımın kotalı olmasından dolayı sohbetimize sesli olarak Google Talk üzerinden devam etmeye karar verdik. Başka işlerle meşgul olmalıydık ki sohbetimizde kopukluklar meydana geliyordu ve sonuçta klasik mesajlaşma seviyesine geri döndük 🙂

Bu olay bana Keramet garajda mı? konusunu hatırlattı. Bir çok büyük web projesinin garajda başlaması elbette bir rastlantı değildi. Zamanında bu yazıya yaptığım yorum ile geliştirilen projelere garaj sahiplerinin imkanları üzerinden bakmıştım. Bu yazımda ise konuya geliştiriciler arasında ki iletişim olanakları üzerinden değineceğim.

Çeşitli projeler üzerinde çalışırken yüz yüze yapılan fikir alışverişleri ile günümüz teknolojisinin sunduğu imkanlar eş değerde olabilir mi? Yüz yüze yapılan görüşmelerde tüm dikkatiniz karşınızdaki kişide yoğunlaşırken bunun dışındaki iletişim türevleri sınırlı sayıdaki duyularınızı uyarmakta. Konuşmanız sırasında siz her ne kadar dikkat etsenizde, bilinciniz başka yerlere kayma eğilimi göstermekte ve muhatabınızın çevrenizi etkileyememesinin(o ne biçim kelime?) getirdiği eksiklik sonucu bu iletişime direnç gösterilmektedir.

İşte garajın mucizesi bu noktada ortaya çıkıyor. İletişimin gücü insanları birbirine bağlıyor ve sanki tek bir kişilermiş gibi düşünüp, yaratıcılıklarını ortaya dökme fırsatı buluyorlar. Fikirlerini, tüm hisleriyle paylaşıp, yanlış anlaşılma olasılıklarını en aza indiriyorlar. Birlikte geçirdikleri vakitler daha çok olduğundan, daha fazla iletişime geçiyorlar ve bunun sonucunda daha sağlıklı bir paylaşım ortamı oluşturuyorlar.

Bunları yazarken “Acaba “Independence Day” filminde yer altındaki askeri merkezlere kapatılan bilim adamları gibi bende arkadaşlarımı bir merkeze kapatsam, nasıl olur?” diye düşünmeden edemiyorum. Medeniyetten uzak, sadece fikir ve teknoloji üretecek bir merkez. Yeride hazır, ne dersiniz? 😀

PyS60 Mesajlaşma

Bu bölümde PyS60 ile mesajlaşma imkanı sağlayan messaging modülünü inceleyecez. Bu modül ile SMS ve MMS gönderebiliriz. Örnek olması açısından sms_send() fonksiyonunu kullanalım.


import messaging
messaging.sms_send("+90534XXXXXXX", u"Selamlar")

Elbette öncelikle modülümüzü import ettik, ardından fonksiyonu kullanarak yazdığımız numaraya selamlarımızı ilettik.

sms_send için söz dizimi şu şekilde:
sms send(number, msg, [encoding=’7bit’, callback=None, name=”” ])
numaramızı giriyoruz, mesajı yazıyoruz, istersek encoding değerini belirtiyoruz(7bit, 8bit, UCS2), name kısmında isim belirtebiliyorsunuz callback mesajın durumuyla ilgili veriler hakkında ki bir seçenek aşağıdaki örnekte ne işe yaradığını anlayacaksınız.

mms_send için söz dizimi:
mms send(number, msg, [attachment=None ])
Burada attachment kısmı göndereceğiniz resmin tam adresidir. number telefon numarası msg ise mesajınız. Bu özellik 3.0 versiyonlarında kullanılabilir. Messaging modülü ile bazı verileri kullanabilirsiniz demiştim işte aşağıda:

import messaging
def cb(state):
if state==messaging.ESent:
print "**Mesaj yollandı**"
if state==messaging.ESendFailed:
print "**Mesaj gönderilemedi**"

messaging.sms_send("1234567", "Selamlar!", '7bit', cb, "Ceyhun")
**Mesaj yollandı**

Messaging modülümüzü import ettik ardından “cb” isimli bir fonksiyon tanımladık. Buna göre eğer state, messaging.ESent’e eşit olursa (ESent fark ettiğiniz gibi mesajın başarıyla yollandığına ait veridir) mesaj yollandı yazısını print ederiz. Eğer state, ESendFailed verisi ile eşleşirse bu sefer mesajın yollanamadığı hatasını almış oluruz. Bu fonksiyonu oluşturmayı bitirdiğimizde normal şekilde sms_send() fonksiyonunu kullandık 1234567 numarasına selamlarımızı ilettik callback olarak yazdığımız fonksiyon sonucunda sms._send() ifadesini girmemizin ardından Mesaj yollandı cevabını aldık.

Şimdilik bu kadar arkadaşlar bir sonra yazımda uygulama çatısı hakkında bazı bilgiler verecem, kolay gelsin.

Mobile Python Kullanıcı Arayüzü(UI)

PyS60’ın sunduğu kullanıcı arayüzü modülü appuifw dır. Çalışmalarımızda önce diğer python programları gibi önce kullanacağımız modülü import ederiz. Şimdi gelin appuifw modülünün fonksiyonlarına göz atalım:

query
Bu tek satırlık dialogtur. Veri girişi sağlar. Söz dizimi şu şekilde olur:
query(label, type[, initial value ])

Label kısmına isteğinize göre bir yazı girebilirsiniz, type girilecek verinin türüdür bu şunlardan biri olabilir :
“text”, “number”, “date”, “time”, “code”, “query”, “float”

Bir örnek yazalım
appuifw.query(u”Birsey yaz ey muhterem:”, “text”, u”baslangic degeri bu”)
dikkat ettiyseniz baslarinda u bu yazdığınız satırın Unicode olduğunu belirtir. Symbian OS bir çok dilde kullanıldığı için yazı olarak Unicode standart kabul edilir.

note
Bu fonksiyon bir popup mesjı gösterir. Örneğin yükleme tamamlandı penceresi açılır yada mesaj gönderildi diye bir pencere çıkar ya karşınıza işte o işi yapar note.
Söz dizimi “note(text[, type[, global ] ])” şeklindedir. Bir örnek verelim:
appuifw.note(u”Yükleme tamamlandı!”, “info”)
Label kısmına metinimizi yazdık, tip olarakda info, error, conf seçeneklerinden infoyu seçtik. Bunlar seçeneğe göre mesajınızın yanında simge belirmesini sağlıyor.

multi_query
Adından anladığınız üzere bu sefer tek satır değil çoklu satırda veri girişi alıyoruz.
Söz dizimi “multi query(label1, label2)” şeklinde olur. Örnek verelim:
appuifw.multi_query(u”Adınız:”, u”Soyunuz:”) Elime Mobile Python kitabı geçti onun içinde bu konuyla ilgili güzel bir örnek var ona benzer birşey yazalım.


import appuifw
isimler=appuifw.multi_query(u"Adınız:", u"Soyunuz:")
if isimler:
first, last = isimler
appuifw.note(u"Adınız ve soyadınız: " + first + " " + last)
else:
appuifw.note(u"İptal!)

popup_menu
Açılır bir menü oluşturur. Bir listedeki itemleri gösteriri. Söz dizimi şu şekilde olur:
popup_menu(list[, label ])

Bir örnek verelim:


if index == 0:
appuifw.note(u"Python sectiniz")
elif index == 1:
appuifw.note(u"C sectin iyy")
elif index == 2:
appuifw.note(u"Java sectiniz")

Bir listeyi gösterdiğini söylemiştim, bu yüzden popup_menu fonksiyonunu kullanmadan önce secenekler isimli bir liste tanımladım. Ardından bu listeden yapılan seçime göre sonuç veren bir uygulama yazdım.

selection_list
Bunda bir listede arama yapma imkanı vardır. Örneğin telefonun rehberini kullanırken kullandığınız arama bölümü buna benzer. Söz dizimi “appuifw.selection_list(choices, search field)” şeklindedir. Bir örnek verelim:


import appuifw
secenekler = [u"Python", u"C", u"Java"]
index = appuifw.selection_list(secenekler, 1)
if index == 1:
print "Dogru"
elif index != None:
print "Hayırrr " + secenekler[index] + "dogru değil"

Uygulamamızda önce import ettik sonra secenekler isimli bir liste oluşturduk ardından kullanıcının seçecei dile göre bir fonksiyon yazdık. Python bilginiz olduğunu varsayarak bu örnekleri hızlı hızlı geçiyorum, eski blogumda bloggerın yasaklanması ve onu silmeden önce liste neydi tüp neydi ayrıntılı şekilde yazmıştım. Şimdi bu konularla zaman kaybetmeye gerek yok merak eden çeşitli kaynaklardan bilgi edinebilir örneğin örnekler konusunda bana örnek olan Mobile Python kitabı gibi veya şu link size faydaları olacaktır. Biz konumuza devam edelim…

multi_selection_list
Bunda kullanıcı birden fazla seçim yapma imkanına sahiptir seçeneklerin yanında birer kare vardır ve işaretlindiği zaman seçilmiş demektir(hadi canım?) Search_field gibi bir yardımcıya sahiptir default olarak 0 olarka gelir bu parametre eğer listeniz uzunsa bu değeri 1 yaparak kullanıcının daha rahat seçim yapmasını sağlayabilirsiniz. Fonksiyonun söz dizimi:
multi selection list(choices[, style, search_field ]) şeklindedir.
Gelin bir örnek ile bu özelliğede hakim olalım:

import appuifw
renkler = [u”kırmızı”, u”yeşil”, u”mavi”, u”portakal”]
secim = appuifw.multi_selection_list(renkler,’checkbox’,1)

Bir dahaki yazımda mesaj çekmeyi öğrenecez 🙂

Önemli NOT: Arkadaşlar Python kullananlar bilir if ifadesinden sonraki satırda dört birim boşluk bırakıp fonksiyonu yazarsınız her nedesen blogger sürekli bu kodları sola dayıyor. Biliyorum düzeltmek benim görevim ama bazen hepsiyle uğraşamıyorum. Bu yazılar Python bilen kullanıcılar için yazılmıştır. Uygulamalara geçmeden önce mutlaka Python hakkında bilgi edininiz, böylelikle benim yazım sırasında yaptığım hatalar sizide yanlışa sürüklemez.

PyS60 Telefona Kurulum

Uygulama yazmadan önce Python’u telefonumuza kurmamız gerekiyor nede olsa yazdığımız programları derleyecek olan o. Öncelikle telefonun modelini bilmeniz gerekiyor(6260’mış benim ki)
ardından geliştirilme platformunu öğrenmelisiniz S60 2nd Edition, Feature Pack 1 gibi bir şey öğreneceksiniz Nokia’nın sitesinden yada ufak bir google araştırmasından sonra bulabilirsiniz. Ardından şu adresten sisteminize uygun pythonu ve script shellini indirmelisiniz örnek olması açısından benim 6260 telefonum için şu dosyalar gerekliydi

PythonForS60_1_4_4_2ndEd.SIS
PythonScriptShell_1_4_4_2ndEd.SIS

Versiyon yanda yazıyor 2nd Edition , Feature Pack bende 1 olduğu için falzadan bir ek almadı dosya adı yoksa 2ndEdFP2 gibi isim uzardı.

İndirdiğiniz dosyaları telefonunuza bluetooth veya usb bağlantı yoluyla atınız. Ardından dosyaları çalıştırıp kurunuz. Sisteminizin ana menüsünde Python seçeneği eklenecek, içersinde bazı örneklerde mevcut run script seçeneği ile bu kodları çalıştırabilirsiniz. Bu arada yükleme esnasında ben bir sorun yaşadım, yükleme yapmadan önce telefonun saatinin ve tarihinin doğru olduğunu kontrol ediniz aksi takdirde güvenlik hatası verip yükleme başarısız olur. Kendi telefonumda denediğim için Symbian kullanan diğer sistemlerde nasıl bir protokol uygulanıyor bilmiyorum.

Not: Dosyalar bölümünde SDK var wikisinde ayrı olarak kurmaya gerek olmadığı, programlarınızı çalıştırmak için belirttiğim iki uygulamanın yeterli olduğu söylenmiş.

PyS60

Reklamlarda gelişmiş telefonları görüyorsunuz. Cep telefonları artık sadece bir “telefon” değil. Teknolojinin gelişmesiyle birlikte bir çok gelişmiş model bir ofise dönüştü. Bir çok dilde cep telefonları için hazırlanmış kütüphaneler mevcut olmalı(bilmem bakmadım), bu diller çalışırken Python boş duramazdı Nokia tarafından geliştirilen PyS60 işte bunun için var. Bu yazımda PyS60’ın ne olduğu üzerinde biraz duracağım bir noktadan sonrada konuyu ilerletip belki ufak yazılımlar hazırlamaya başlayabilirim.

Burada yazılanlar bir kaç kaynaktan alınmış konuların bir açıdan özetidir. Yazıyı okuyanların bunun bir nevi kendim için hazırladığım özet olduğunu unutmaması ve burada yapılacak hataların düzeltilmesi için katkıda bulunabileceklerini unutmalarını isterim. Hadi başlayalım

Evet PyS60 Nokia tarafından geliştirilmiştir, kullanılacağı yer Nokia’nın S60 serisi Symbian işletim sistemi kullanan telefonlarıdır. Özgürleşmiş Symbian üzerinde çalışmak için gerekli olan bu PyS60 kütüphanesi iki kısıma ayrılabilir:

Yerleşik(built-in) birinci kısım e32 ve appuifw isimli iki modül içerir. Bunlar standart python modüllerinin erişemediği Symbian işletim sistemi servislerine erişir ve kullanıcı arayüzü için bir çatı sağlar.
İkinci kısım dinamik şekilde yüklenebilen uygulamalardan oluşur. Bunlar S60’ın yazılım programa arayüzünün çeşitli fonksiyonlarına erişir. Yerleşik modüllerin tersine bunlar sadece gerektiğinde çağırılır. Bunlara ilerki yazılarda ayrıntı şekilde girecem, şimdilik 16 modül olduğunu bilmeniz yeterli. Bir kaçının adını verdiğimde ne işe yaradıklarını tahmin edebileceğinizden buyurun: audi, camera, telephone, calendar, sysinfo… anladınız sanırım 🙂

Python ile uygulamar yazarken çeşitli servislere bağlanacağız bunlar farklılık göstersede izleyeceğimiz yol temel üç aşamadan oluşmakta:

-kullanılacak servis objelerinin hazırlanması,
-gerekli ayarların yapılması,
-telefonun fonksiyonlarını kullanacak metotların çağırılması.

Eğer kullanacağınız modül bir yerleşik modülse birinci aşama kesinlikle gerekli ama dinamik modüller için başlangıçta hazırlamaya gerek yok çünkü onların fonksiyonlarına direkt olarak erişebilirsiniz. Bunun sebebi bu modüllerin statik olmasıdır örnek verelim

input= query(u”Text Girin”,”Text”)

Bunun yanında bir ses yüklemek istersek objeleri hazırlamamıza gerek yok. Çünkü Sound modülü statik(durağan) ve istediğimiz zaman open metodunu kullanarak .waw uzantılı dosyamızı çağırabiliriz. Örnek vereyim:

Sound.open(“deneme.waw”)

İkinci aşamada ise gerekli ayarları yapmamız gerekiyor statik metotlar kullanırsanız ayarlarıda statik ayarlayıcılar üzerinden yaparsınız. Tüm python sınıflarında olduğu gibi bu ayarları onjeleri kullanıma hazırlarken belirtebilirsiniz. Örnek olarak selection_list’in tüm erişilebilir fontları listelemesini sağlayalım aşağıdaki kodlar kullanıcının fontları listelemesini ve birini seçmesini sağlar.

li=avaliable_fonts()
si=selection_list(li,1)

Bununla birlikte ses düzeyini ayarlamak için basitçe set_volume() metodunu çağırabiliriz çünkü buda statiktir. Aşağıdaki örnekte ses 10 olarak ayarlanır.

Sound.set_volume(10)

Son aşamada ise kullanacağımız fonksiyonlar için gerekli metotlar çağırılır. Burada yine iki çeşit örnekleme mevcut mesela kullanıcıdan bir giriş alalım ve bunu yine kullanıcıya geri döndürelim, burada kullanıcıyla iletişime geçiyoruz:

data=entry(u”Koy istedini aga:”,”text”)
note(u”Bunu koydun sen:” +data,”info”)

veya cihazın Sound modülünün play() metodunu getirelim böylelikle cihaz bir sesi çalacak ve duracak onun özelliğini kullanmış olacaz(cihazla iletişime geçtik):

Sound.play()

İlerki yazılarımda ayrıntıya girmeyece başlayacağım, bu konuda kullandığım kaynaklar:
http://www.devshed.com/c/a/Python/Mobile-Programming-in-Python-using-PyS60-Getting-Started/2/ (ingilizce)
http://wiki.opensource.nokia.com/projects/Python_for_S60 (İngilizce)
http://downloads.sourceforge.net/pys60/PythonForS60_1_4_4_doc.pdf?modtime=1214578033&big_mirror=0 (Pdf – dökümasyon download linki- ingilizce)