8 Temmuz 2013 Pazartesi

PyQT ile Python GUI Geliştirme - 1

QT, TrollTech firması tarafından platform bağımsız grafik arayüz geliştirmek üzere geliştirilmektedir. Pek çok programlama dili ile birlikte kullanılabilen QT, python diliylede birlikte kullanılabilmektedir.

Python için QT Riverbank firması tarafından geliştirilmektedir.



Aşağıda ki linkten gerekli Python versiyonuna ve işletim sistemine ait paketi indirip kurunuz.

http://www.riverbankcomputing.com/software/pyqt/download

Yazı serimiz boyunca IDE olark PyCharm IDE'si kullanılacaktır. Siz dilediğiniz tüm metin editörlerini ve IDE'leri kullanabilirsiniz.

Aşağıda ki kodları yazıp çalıştırdığımızda ekrana küçük bir pencere gelecektir.


from PyQt4.QtGui import *

app = QApplication([])
label = QLabel('<h1>Python Dersleri</h1>')
label.show()
app.exec_()


1. satır = QT'yi kullanabilmek için gerekli modüller import edilmekte.
2. satır = QApplication nesnesi oluşturulmuştur. QT uygulamaları bu nesne üzerinden çalışmaktadır.
3. satır = Bir adet Label tanımlanmıştır. Swing ile JAVA'da yada C# dilinde GUI geliştirilirken tanımlanan label'lar gibi düşünebilirsiniz. QLabel içerisinde html tag'lerini kullanabilirsiniz.
4. satır = Label gibi widget'lerin uygulamada görüntülenmesi için show() metodu çağırılmıştır.
5. satır = exec_ metodu ile QT uygulamamız çalıştırılmıştır. Kullanıcı ile etkileşimler exec_() üzerinden yakalanmaktadır.


from PyQt4.QtGui import *
from PyQt4.QtCore import *

app = QApplication([])

window = QWidget()
window.setWindowTitle('PythonDersleri.com')
txtLabel = QLabel('Python Dersleri')
btnButton = QPushButton('Change')


def changeTxtLabel():
    txtLabel.setText('Python Ogreniyorum')

window.connect(btnButton, SIGNAL('pressed()'), changeTxtLabel)

dizayn = QHBoxLayout()
dizayn.addWidget(txtLabel)
dizayn.addWidget(btnButton)

window.setLayout(dizayn)
window.show()
app.exec_()



1. ve 2. satır = Gerekli QT modülleri import edilmiştir.
4. satır = QApplication nesnesi oluşturulmuştur.
6. satır = Bir adet Widget oluşturulmuştur. Butona basıldığı oluşan sinyal bu widget üzerinden yakalanmaktadır.
7. satır = Pencerenin başlığına yazı atanmıştır.
8. satır = Bir adet Label oluşturulmuştur.
9. satır = Buton oluşturulmuştur. Bu butona basıldığında oluşturulan Label'in içeriği değiştirilecektir.
12. satır = Bir fonksiyon tanımlanmıştır. Bu fonksiyon txtLabel'a yeni text atamaktadır.
15. satır = btnButton isimli butona basıldığında pressed() sinyali yayınlanır. Bu sinyali window isimli bizim tarafımızdan oluşturulan QWidget'ın connect metodu ile yakalamaktayız. 3. parametre olarak ise bu butona basıldığında hangi fonksiyonun çağırılacağını söylüyoruz. Bu şekilde butonumuza basıldığında QLabel'ımızın text'i değişecektir.
17. satır = Bir adet QHBoxLayout oluşturulmakta. Bu layout ile label ve butonumuz yan yana sıralanacaktır. Alt alta sıralamak istiyorsanız QVBoxLayout kullanabilirsiniz.
18 ve 19. satır = Oluşturduğumuz label ve buton bu layout içerisine yerleştirilir.
21. satır = Layout ise tanımladığımız window isimli widget'a atanmaktadır.

Ev Ödevi :

Bir dizide sizin tarafınızdan tanımlanmış 10 adet eleman bulunmaktadır. Bu elemanlar her butona basıldığında label'e sırasıyla atanacaktır. Ayrıca üstte label olmak üzere buton ve label'imizin alt alta olması istenmektedir.

5 yorum :

  1. from PyQt4.QtWebKit import *
    from PyQt4.QtGui import *
    from PyQt4.QtCore import *



    class sex:
    def __init__(self):
    self.app = QApplication([])
    self.win = QWidget()
    self.win.setWindowTitle("deneme")
    self.dizi = ["1","2","3","4","5","6","7","8","9","10"]
    self.label = QLabel()
    self.buton = QPushButton()
    self.diz = QVBoxLayout()
    self.x()

    def change(self):
    for i in self.dizi:
    self.label.setText(i)

    def x(self):
    self.win.connect(self.buton,SIGNAL("pressed()"),self.change)
    self.diz.addWidget(self.label)
    self.diz.addWidget(self.buton)
    self.win.setLayout(self.diz)
    self.win.show()
    self.app.exec_()

    sex()

    Bunu daha kolay nasıl yapabiliriz farklı bir fonksiyonu varmı ? butona tıkladım mı direk 10'a gidiyor

    YanıtlaSil
  2. abi tek sıkıntı kurulum aşamasını anlayamıyoruz(windowsta)

    YanıtlaSil
  3. Kurulumu oldukça zor o yüzden kurulumunu anlatan bir yazı koyuyorum. Bir sözlük sitesinde lieutenantmono isimli kardeşimiz güzelce izah etmiş teşekkür ediyorum.

    pyqt'nin kurulumu doğru dürüst bir şekilde hiçbir yerde yazmıyor, hele ki windows için geliştirme yapacaksanız kaynak bulmanız neredeyse imkansız. ben kendim kurdum, çalıştırdım, nasıl yaptığımı da yazıyorum ki, ihtiyacı olan olur belki:

    - önce http://sourceforge.net/…atest/download?source=files adresinden mingw indiriyoruz ve kuruyoruz. kurarken c ve c++ compiler'ları seçiyoruz.

    - kurulum işlemi tamamlandıktan sonra c:\mingw\bin yolunu sistemimizin path'ine ekliyoruz. bunun için şu yolu izliyoruz: bilgisayar -> sistem özellikleri -> gelişmiş sistem ayarları -> ortam değişkenleri. sistem değişkenleri yazan kutucuğun içinde "path" değişkenini buluyoruz ve çift tıklıyoruz, değişken değerinin sonuna bir noktalı virgül koyuyoruz, hiç boşluk bırakmadan c:\mingw\bin yazıyoruz. yani tam olarak ;c:\mingw\bin eklemiş oluyoruz.

    - http://www.python.org/…ython/2.7.3/python-2.7.3.msi adresinden python 2.7'yi indiriyoruz ve kuruyoruz. kurulum bittikten sonra yukarıda anlatıldığı gibi sistem path'ine ;c:\python27 ekliyoruz.

    - http://www.riverbankcomputing.co.uk/…e/sip/download adresinden source packages'ın altından sip'in windows source versiyonunu indiriyoruz (en son ismi sip-4.14.6.zip idi). mingw'yi bu sip'i compile etmek için yükledik, çünkü sip'in compile edilmiş hali yok ve yalnızca source code halinde indirilebiliyor. sip'i indirip masaüstüne çıkarıyoruz. başlat'a basıp cmd yazıyoruz ve komut satırını açıyoruz. cd desktop/sip-4.14.6 yazıp (sürüm numarası artık her ne ise) sip klasörünün içine (veya sip'i nereye çıkardıysak oraya) geçiyoruz. önce python configure.py --platform win32-g++ komutu veriyoruz, sonra mingw32-make, sonra da mingw32-make install komutlarını sırasıyla veriyoruz.

    - http://www.riverbankcomputing.co.uk/…/pyqt/download adresinden binary packages'ın altından pyqt'nin python 2.7 32 bit installer'ını indiriyoruz ve kuruyoruz (en son ismi pyqt4-4.10.1-gpl-py2.7-qt4.8.4-x32.exe idi).

    - idle'ı açıp (python yükleyince geliyor) import pyqt4 yazıyoruz (p ve q büyük harflerle). hiç hata vermeden yeni satıra geçiyorsa yüklenmiş ve doğru bir şekilde çalışıyor demektir, hayırlı olsun.

    YanıtlaSil
  4. bir konuda bilgi almak istiyorum acaba basit bir proje video su çekme şansınız varmı sıfırdan başlıyorum da mesela c# ta formlar arası geçiş veri tabanına baglantı ekleme güncelleme silme seçme gbi işlemler listeleme ne bileyim bunun gibi şeyler ve bu projeyi nasıl setup haline getirip insanlara kullandırabiliriz güvenligede biraz olsun deginirseniz çok sevinirm teşekkürler şimdiden

    YanıtlaSil
  5. Pyqt5 Kullanarak formalar arası geçişi nasıl yaparız ?

    YanıtlaSil