dersblog

Python Bazlı Taşınabilir Mobil UI Kodları - Kivy

Kivy bazli yazilan Python UI kodlari hem Android hem iOS uzerinde isleyebiliyor. Android kodlamasi icin Java kullanmak istemeyenler icin iyi bir secenek olabilir. Kodun telefona gonderilmesi icin birkac yontem var, birisi Kivy "isletici" bir programi kurmak, bu isletici programin kendi apk'si var, ya Google Play'den ya da Kivy sitesinden bu apk indirilebilir.

Bu isletici programi telefonda baslatinca program dizin sisteminde /storage/emulated/0/kivy adli bir dizine bakacak, ve altinda gordugu tum alt dizinleri Kivy programlari olarak kabul edecek. Bir Kivy programinin olusturulmasi cok kolay, iki dosya yeterli. Biri android.txt digeri main.py. Text dosyasi

title=Hello World
author=Burak Bayramli
orientation=portrait

Merhaba Dunya uygulamasi

from kivy.app
import App
from kivy.uix.button import Button

class TestApp(App):
   def build(self):
      return Button(text='Hello World')

TestApp().run()

Tabii her "uygulama" kivy dizini altinda ayri bir dizin olabilir, her dizinde ayri bir android.txt dosyasi... Telefondak Kivy Launcher ana dizinde gordugu her alt dizini ayri bir uygulama olarak baslangic listesinde gosterir.

Ayrica /storage/emulated/0/kivy dizini telefonda "Internal storage" denen dizine tekabul ediyor. Not: burada kivy dizini yoksa, bunu elle olusturmak lazim.

Dugme Tiklama

Bu ornekte dugme olsun, ona basilinca /sdcard/Download (bu /sdcard da ayni sekilde Internal Storage demek), altinda bir dosyaya bir seyler yazilsin.

from kivy.app import App
from kivy.uix.button import Button

def callback(instance):
    print('The button <%s> is being pressed' % instance.text)
    fout = open("/sdcard/Download/kivy-out.txt","aw")
    fout.write("filan falan fisman\n")
    fout.close()


class TestApp(App):
    def build(self):
        btn1 = Button(text='Hello World')
        btn1 = Button(text='Hello world 1')
        btn1.bind(on_press=callback)
        return btn1

TestApp().run()

Dizustunde Kivy GUI Isletmek

Acaba Kivy uygulamasinin nasil isleyecegini gelistirme ortaminda, telefonda isletmeden once gorsek iyi olmaz mi? Bunun icin Python 3 icin bir virtualenv sanal ortami kurup,

pip install kivy
pip install pygame

yeterli. Simdi python main.py ile Kivy uygulamaniz baslayacaktir! (Not: tabii telefona yapilan referanslar ayni olmayabilir, mesela dizustu ortaminda /sdcard dizini yok).

Kendi APK'mizi kendimiz Olusturmak

Python kodlarindan direk APK'ye gitmek te mumkun. Burada Kivy'nin alt projeleri olan buildozer ve python-for-android gibi cozumler var. Bu projelerden python-for-android ile, anladigimiz kadariyla (daha kullanmadik) numpy, PIL, opencv gibi yerli kodlari APK icine dahil etmek mumun. Tek problem python-for-android sadece Linux uzerinde isliyor. Fakat Kivy, VirtualBox uzerinden isletilebilecek ve icinde gerekli tum araclar onceden kurulmus bir sanal makina imajini sitesinden paylasiyor. Ya bu, ya da kendimiz Ubuntu kurarak python-for-android'i kullanabiliriz.


Yukarı