26 Eylül 2010 Pazar

PyQt


Qt, Norveçli firma Trolltech tarafından geliştirilmektedir. Dikkatleri ilk kez KDE masaüstü ortamının bu araç takımını kullanması ile çekmiştir. İlk sürümleri özgür olmayan bir lisansla dağıtılmaktadır. Linux gibi hızla büyüyen bir özgür işletim sisteminin en popüler masaüstü ortamının özgür olmayan bir araç takımı kullanması elbette hoş karşılanmamıştır. Tepki olarak kullanarak GTK+ ve GNOME masaüstü geliştirilmeye başlanmıştır. Bununla birlikte Harmony denen ve Qt'ye benzeyen bir araç takımı da geliştirilmeye başlanmıştır.

Trolltech, bu tepkilere karşı Qt'yi QPL denen, GPL benzeri bir lisansla yayınlamıştır. Bunu da beğenmeyen özgür yazılım takipçileri sonunda Trolltech'e Qt'yi GPL olarak dağıtmasından başka çare bırakmamıştır. Eğer olur da Trolltech'in başına bir şey gelirse diye, hem Qt hem de KDE kütüphanelerinin gelişimini devir alacak KDE Free Qt Foundation kurulmuştur.

Yazmis oldugum şu iki paragrafı Qt'nin wiki sayfasından aldım Qt ile gtk arasındaki ilişkiyi okudugum zaman Linux ve Windows, Java ve C# , Silverlight ile Flash arasındaki rekabeti gözümün önüne getirdi..

Biz de Tübitak ortakli yapacağımız çalışmalar ile python ve Qt üzerine yazılmış birden fazla uygulamayi Pardus üzerinde Gnome masasüstünün de bulunması için python ve gtk üzerine yapacağız tabiki de gnome için gerekli olan bağımlılıkları da unutmamak gerek..Elbette Gnome Masaüstü ortamını sadece bağımlılıklarını sisteme yükleyerek bir pardus gnome ikilisi yaratabilirdik fakat pardus'un kde ortami ile beraber gelen uygulamaları(network manager,service manager v.s.) gnomeda da calismasını sağlamak gerekirdi.

Şimdi az da olsa kod tarafına geçelim.Qt ile Python arasındaki ilişkiyi bir nevi Java ve Swing ikilisine veya .Net ortamında C# ve WinForms ikilemesine benzetebiliriz.Qt bileşenleri ile hazirladığımız arayüz .ui uzantılı olup pyqt modulunu sistemimize dahil ederek python tarafından kullanabiliriz.(Eğer Windows ortamında calısıyorsak pyqt modulunu python 2.5,2.6,2.7 hangi sürümü altında derlemişssek o sürüm altında calistirabiliriz.Linux da böyle bi sorun yok işletim sisteminden kaynaklanan bir sorun bu.) Qt ile hali hazirda kullanacağımız baya metotda bulunmakta bunu Qt ortamında signal slot'larımızı düzenleyerek bu metotlardan da yararlanabilriz.Elbette bizim yazacağım python fonksiyolarini signal slotlarımız ile ilişkilendirebiliriz.Signal Slot kavramı .Net ortamındaki Event Handler programlama mantıgı ile benzer yanlar gostermektedir.

ve son olarak Qt ile hazirlayacağımız .ui(user interface) arayüzü default olarak c++ ile gelmekte. (Bunu Qt Designer-> Form -> View Code sekmesinden gorebiliriz.) Hazırladıgımız bu arayüz bileşenleri kullanmak için pyuic4 komutu ile bir python sınıfına donusturmemiz gerekir.

Kullanımı:

pyuic4 deneme.ui -o deneme.py

Hiç yorum yok:

Yorum Gönder