Qt Tasarımcı
Qt Tasarımcı, Qt bileşenlerinden oluşan grafik arayüzler tasarlamak için kullanılıyor. Herhangi bir dağıtımın paket yöneticisinden designer-qt4 paketini kurduktan sonra, menüden tıklayarak veya konsolda designer-qt4 komutunu vererek Qt Tasarımcı'yı çalıştırabilirsiniz.

Tasarımcı, çok pencereli ve tek pencereli olmak üzere iki tür görünüşe sahiptir. Ön tanımlı gelen çok pencereli görünüşte araç kutuları birbirinden bağımsız olarak masaüstünüzde duracaktır. Toplu görünüşle geçmek için Düzen>Tercihler'i (Edit>Preferences) açıp Yüzen Pencereler'i (Docked Window) seçin. Tasarımcı'nın araç kutularını farenizle sürükleyerek istediğiniz gibi bir görünüş sağlayabilirsiniz

Tasarımcı'da en çok kullanacağınız araçlar parçacık kutusu (widget box), yerleşim (layout) araç çubuğu ve kaynak düzenleyici (resource editor) olacak. Parçacık kutusunda, pencerenizde olmasını istediğiniz parçacıkları sürükleyip istediğiniz yere bırakabilir ve yerleşim araç çubuğundaki düğmelerle bu eklediğiniz parçaların pencere boyutu değiştiğinde nasıl görüneceklerini belirleyebilirsiniz. Bunu daha iyi anlamak için bir örnek üzerinde çalışmalısınız. Tasarımcı'da bir pencere oluşturun ve bu pencereye birkaç parçacık ekleyin. Daha sonra pencerenizin üzerindeki boş bir bölgeye tıklayıp yerleşim araç çubuğundan Izgara İçine Yerleştir düğmesine tıklayın. Bunu yaptığınızda pencereye eklediğiniz parçacıklar pencere boyut değişimlerine uyum sağlayacaktır. İsterseniz Form menüsünden Önizle'yi (Preview) tıklayarak bir önizleme yapabilirsiniz.

Yerleşim araç çubuğu
Yerleşim araç çubuğunda, ızgara yerleşimi dışında dikey ve yatay olmak üzere iki yerleşim türü daha bulunur. Bu yerleşim türlerini de deneyerek nerelerde kullanabileceğinizi görebilirsiniz. Eğer pencerenizdeki parçacıklardan yalnızca birkaçını etkileyecek yerleşim uygulamak isterseniz, CTRL tuşuna basılı tutarak birkaç parçacığı birden seçebilir ve bunlara uygulanacak yerleşimi tıklayabilirsiniz.

Normalde pencere yeniden boyutlandırıldığında parçacıklar aynı yerde kalır.

Yerleşim uygulanırsa parçacıklar da boyut değişimine uyum sağlar.
Kaynak Sistemi ve Kaynak Düzenleyici
Görsel kullanıcı arayüzü programlamanın en önemli öğelerinden biri simgelerdir. Simgeleri olmayan bir program çoğu kişiye itici gelecektir. PyQt'nin kaynak sistemi, programımızın arayüzüne simge ekleme işini oldukça kolaylaştırıyor. Bu sistemde sadece simgelerle de sınırlı değilsiniz, istediğiniz her türlü dosyayı programınızın içine gömebilirsiniz. Şimdi bu sistemin nasıl çalıştığına bir bakalım.
PyQt'nin kaynak sistemi, Qt Tasarımcı içinde bulunan bir Kaynak Düzenleyicisi'nden ve pyrcc4 adlı bir komut satırı aracından meydana gelir. Kaynak düzenleyicisi .qrc (Qt ResourCe) uzantılı bir xml dosyası oluşturur. pyrcc4 komutu ise bu dosyada belirtilen kaynakları birleştirip sıkıştırarak bir Python betiği oluşturur.

Kaynak düzenleyiciye Tasarımcı'nın araçlar (tools) menüsünden ulaşabilirsiniz.
Kaynak sistemiyle çalışmak için şunları yapın:
- Kullanmak istediğiniz simgeleri bir dizine toplayın.
- Qt Tasarımcı'daki kaynak yöneticisi kullanılarak yeni bir kaynak dosyası oluşturun.
- Yine kaynak yöneticisinden kaynak dosyasına eklenecek simge, resim, çeviri, vb. dosyaları seçin.
- Tasarımcı'daki özellik düzenleyiciyi kullanarak düğmelere istediğiniz simgeleri atayın.
- pyrcc4 aracını kullanılarak .qrc dosyasını .py uzantılı bir Python betiğine dönüştürün. Bu komutun örnek bir kullanımı şu şekildedir: pyrcc4 kaynak.qrc -o kaynak_rc.py
- Oluşan Python betiği programımızda gerek duyuldukça kullanılabilir. Kaynak dosyasından bir simgeye PyQt programınız içinden erişmek için import kaynak_rc diyerek kaynak dosyanızı çağırın ve kodun devamında QtGui.QIcon(":/simge.png") gibi dosyanın yerini belirtirken başına ':' işareti koyun.

Kaynak düzenleyiciden bir kaynak oluşturduktan sonra özellik düzenleyici kullanarak kolayca simge atayabilirsiniz.
Kaynak sistemini daha iyi anlayabilmek için bir örneğin üzerinde denemeniz gerekir. Gelecek yazımızda bu konuyu da içeren bir örnek yapacağız.
Yerelleştirme sistemi
Daha önce de bahsettiğim gibi PyQt, beraberinde güçlü bir çeviri sistemi getiriyor. Bu sayede programlarımızı yaparken arayüzde İngilizce kullandığımız takdirde diğer dillere çeviri işleri oldukça kolaylaşacaktır. Çeviri sistemi, pylupdate4, lrelease-qt komutları ile .ts ve .qm uzantılı dosyalardan meydana geliyor. pylupdate4 komutu .ui ve .py uzantılı dosyalardan topladığı çevrilebilir olarak işaretlenmiş yazıları .ts uzantılı bir xml dosyasında toplar. Eğer .ts dosyası zaten varsa bundaki çeviri bilgilerini koruyarak dosyayı yeni bilgilerle günceller. Çevirmenler Qt Dilci (Linguist) aracını kullanarak bu .ts dosyalarını kendi dillerine çevirirler. Çeviri bittikten sonra, lrelease-qt4 komutu istenen .ts uzantılı dosyadaki çeviri metinlerini sıkıştırıp .qm uzantılı bir dosyada toplar. Daha sonra programımızda, oluşan bu .qm uzantılı dosyayı yükleterek arayüz metinlerinin çevrilmiş hallerini gösterebiliriz.

Qt Dilci (Linguist) aracı çevirmenlerin işini oldukça kolaylaştırıyor.
pylupdate4 komutunun programımızdaki çevrilebilir metinleri düzgün algılayabilmesi için bunları
QtGui.QApplication.translate("MainWindow", "Hello World!")
şeklinde belirtmeliyiz. Buradaki ilk parametre yani "MainWindow", çevrilecek yazının Qt Dilci'de hangi kategori altında çıkacağını belirtir. İkinci parametre ("Hello World!") ise neyin çevrilmesi gerektiğini belirtir.
Çevrilecek yerleri bu şekilde işaretledikten sonra yazdığımız programdan bir .ts dosyası oluşturmak için şu komutu veririz:
pylupdate4 program.py -ts program.ts
Çeviri işlemi bittikten sonra .qm dosyasını oluşturmak içinse şu komutu veririz:
lrelease-qt4 program.ts -qm program.qm
Programınızın çeviri dosyasını yüklemesi içinse QApplication'ın installTranslator metodunu kullanmalısınız. Sistem diline göre çeviri dosyasını yükleyen bir programın ana kodları şuna benzeyecektir:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtCore
from PyQt4 import QtGui
def main():
app = QtGuiQApplication(sys.argv)
locale = QtCore.QLocale.system().name()
translator = QtCore.QTranslator()
translator.load("programınadı_%s.qm" % locale)
app.installTranslator(translator)
return app.exec_()
if __name__ == "__main__":
main()
Önemli kodları inceleyecek olursak;
locale = QtCore.QLocale.system().name()
bu satır sistemin yerel bilgisini locale diye bir değişkene atıyor. Bu değer "_" karakteriyle ayrılmış dil kodu ve ülke kodundan oluşur. Yani Türkiye Türkçe'si için "tr_TR" olacaktır.
translator = QtCore.QTranslator()
bu satırda PyQt'nin çeviri sınıfından translator adında bir nesne oluşturuluyor.
translator.load("programınadı_%s.qm" % locale)
bu satırda translator nesnesine "programınadı_tr_TR.qm" adlı dosya yükleniyor.
app.installTranslator(translator)
Bu satırda ise translator nesnesi programımıza yükleniyor. Bu satırdan itibaren programımızdaki metinlerin yerine yüklenen dosyadaki çeviriler gösterilir.
Gelecek yazımızda, şimdiye kadar anlatılanları kullanan bir program yazacağız. Görüşmek üzere...














