QT Proje ve Pencere Oluşturma (QT - 1)

Merhaba arkadaşlar..

Daha önce burada giriştiğimiz yazı dizisine devam ediyoruz.Yazı dizisinin ilk yazısını ve kurulumu burada anlatmıştım.Şimdi QT'de ilk projemizi ve penceremizi oluşturmayı göstericem ve birkaç detaydan bahsedicem size.Yazı dizisi ne kadar sürer hiç planını yapmadım onun o yüzden sürekli takipte kalmanızı öneririm, bitti sanmışken bile yeni bişeyler anlatabilirim (:

QT'nin çalışma mantığından kısaca bahsedecek olursak, QT Designer'da çizdiğimiz form .ui uzantılı olarak bilgisayarımıza XML formatında kaydediliyor.Bizde Python'la PyQT kütüphanesini kullanarak bu XML formatındaki dosyayı bir pencereye dönüştürüyoruz.Burda önemli bir konu var, Python'da OOP yani Nesne Tabanlı Programlamaya azda olsa aşina olmanız gerekiyor.Nesne Tabanlı Programlamayıda bu zamana kadar niye burda anlatmadım şu an onu düşünüyorum, şu anda da karar verdim Nesne Tabanlı Programlamada anlatayım QT ile paralel bi şekilde (:

Evet, şimdi QT'de bir proje nasıl oluşturulur nasıl çalıştırılır onu göstereyim.İlk önce Designer'ımızı açalım.İlk açılışta zaten yeni bi Form oluşturmak için pencere çıkıyor.Çıkmazsa da üstten File >> New... yaparak aşağıdaki pencereyi açabiliriz.Ordan Main Window'u seçip Create butonuyla oluşturuyoruz projemizi.(Diğer Dialog ve Widget'ları ilerleyen makalelerde anlatıcam)

Photo

Proje oluşturuldaktan sonra CTRL + S ile kaydedip Python dosyamızı oluşturmayı göstereyim size.Burda bir detay daha vermek istiyorum.İsterseniz Python'ın pyuic aracını kullanarak otomotik olarak oluşturabilirsiniz ama bana sorarsanız hemen hemen hazır olan herşeye karşı olduğum gibi bunada karşıyım, zaten tam bi verimde alamıyorsunuz.İlerleyen konularda bunu daha iyi anlayacaksınız.Yinede kullanmak istiyorum diyen olursa Windows'ta kullanmak için;

$ pyuic qt1.ui -o qt1.py
Linux'ta kullanmak içinde öncelikle PyQT'nin developer aracını kurmanız gerekiyor.102kB'lık bir araçtır zaten kolayca indirip kurabilirsiniz.Kurmak için;
$ sudo apt-get install pyqt4-dev-tools
Kullanmak içinde Windows'ta çalıştırdığımız komutun aynısını çalıştırıyoruz.;
$ pyuic4 qt1.ui -o qt.py
Şimdi konuyu daha fazla dağıtmadan .ui dosyamızı kaydettiğimiz dizine birde python dosyası açıyoruz.İlk olarak PyQT kütüphanemizdeki QtGui modülümüzü dahil ediyoruz aracımıza.
from PyQt4.QtGui import *
Daha sonra .ui dosyamızı çağırmak için PyQT kütüphanemizden uic modülümüzü dahil ediyoruz.
from PyQt4 import uic
Daha sonra az önce bahsettiğim gibi biraz Nesne Tabanlı programlama yapıcaz, bunun için nesnemizi oluşturuyoruz.Herhangi bir isimde oluşturabilirsiniz bunu.
class AnaPencere(QMainWindow):
    def init(self,ebeveyn=None):
        QWidget.init(self,ebeveyn)
        self.ui = uic.loadUi('qt1.ui',self)
Burda öncelikle AnaPencere adında bi nesne oluşturduk QMainWindow'u dahil ederek.Daha sonra init adında fonksiyonumuzu oluşturduk.Burda şundan bahsedeyim, nesnenin içinde init adında oluşturulan fonksiyon nesnenin başlangıçta gerçekleştirdiği fonksiyondur.Yani dışardan ek olarak çalıştırılmasına gerek kalmaz, nesne çalıştırıldığı anda init fonksiyonuda otomotik olarak çalışacaktır.Burda ek olarak PyQT kütüphanemizin QWidget'ınıda çalıştırıyoruz dışardan.Bunun sebebi Main Window'umuzda da Widget'ların bulunuyor olması.Çalıştırılmazsa araç daha açılmadan hata verip kapanacaktır.Daha sonra en altta da oluşturduğumuz .ui dosyamızı dahil ediyoruz(test.ui).

Kütüphanelerimizi dahil ettik, nesnemizide oluşturduğumuza göre artık penceremizi gösterip uygulamamızı çalıştırabiliriz.Bunuda şu şekilde yapıcaz.Öncelikle uygulamamızı oluşturuyoruz;

uygulama = QApplication([])
Daha sonra nesnemizi tanımlayıp ekrana veriyoruz.
pencere = AnaPencere()
pencere.show()
En son olarakta oluşturduğumuz uygulamamızı exec ediyoruz yani çalıştırıyoruz.
uygulama.exec_()
Tabi pencere içine birşey eklemediğimiz için içi boş olarak çalışıyor (:

Photo

 

Örnek kodlar; qt1.py, qt1.ui Umarım faydalı olmuştur, her zaman daha fazlası için.Kolay gelsin..


Tags: pyqt, pyqt4, pyseries, python, python arayüz, python gui, python qt kütüphanesi, pyuic, qt, qt designer