ABD Münbiçi bırakır mı ?

ABD, Münbiçin yarısı sizde yarısı bizde kalsın dedi

SON 20 YILDA OSCAR KAZANAN KADINLAR

Son 20 yılda En İyi Kadın Oyuncu kategorisinde Oscar kazanan oyuncuların listesi...

AFRİN HAREKATI

Zeytin Dalı Harekatında teröristlerden temizlenen bölge artıyor

Silkroad XIAN

Silkroad sevdalıları için bir server

  • Toplam: 0 Oy - Ortalama: 0
  • 1
  • 2
  • 3
  • 4
  • 5
PyQt sinyaller ve Slotlar

 
#1

Bir kullanıcı program üzerinde fare ya da klavyedeki herhangi bir tuşa tıkladığında sinyaller oluşur. Signal ve Slot Türkçe'ye Sinyal ve Yuva olarak çevrilmektedir. Bu Sinyal ve Yuvalar sayesinde program üzerinde meydana gelen olayları kontrol edebiliyoruz. Yani oluşan bu sinyali veya sinyalleri herhangi bir veya birden fazla metoda yönlendirerek o metot veya metotlardaki işlevlerin gerçekleştirilmesini sağlayabiliriz.

     Bir örnek üzerinden açıklamaya çalışalım. Alt alta bir Label ve bir Buton oluşturalım. Bu butona tıklandığında da Label üzerindeki yazıyı değiştirelim. Kodlarımız şu şekilde:


# !/usr/bin/env python
# -*- coding: cp1254 -*-

from PyQt4.QtGui import *
from PyQt4.QtCore import *
 
app = QApplication([])
 
window = QWidget()
window.setWindowTitle('PythonDersleri.com')
txtLabel = QLabel('Python Dersleri')
btnButton = QPushButton('Değiştir')
 
 
def changeTxtLabel():
   txtLabel.setText('Python Öğreniyorum')
 
window.connect(btnButton, SIGNAL('pressed()'), changeTxtLabel)
 
dizayn = QHBoxLayout()
dizayn.addWidget(txtLabel)
dizayn.addWidget(btnButton)
 
window.setLayout(dizayn)
window.show()
app.exec_()

sinyal1.jpg
Programı bu şekilde çalıştırdığınızda karşınıza şu şekilde bir pencere gelecektir:


sinyal2.jpg

Değiştir butonuna tıkladığınızda ise pencere şu şekilde değişecektir:


Şimdi de kodlarda neler yaptığımıza bir bakalım:
1. Satır = Yazdığımız kodların Python kodu olduğunu ve Python'un dizinini belirtiyoruz.
2. Satır = Türkçe karakterlerin desteklenmesini belirttik.
4. ve 5. Satır = Gerekli QT modüllerini programımıza dahil ettik.
7. Satır = Bir QApplication nesnesi oluşturduk.
9. Satır = Bir tane Widget oluşturduk. Butona tıklandığında oluşan sinyal bu widget üzerinden yakalanmaktadır.
10. Satır = Pencerenin başlığının "PythonDersleri.com" olacağını belirttik.
11. Satır = İçeriği "Python Dersleri" olan bir tane Label oluşturduk.
12. Satır = Üzerinde "Değiştir" yazan bir buton oluşturduk.
15. Satır = Burada bir fonksiyon tanımlanmıştır. Bu fonksiyon ile Label'a yeni text atanmaktadır.
18. 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.
20. 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.
21. ve 22. Satır = Oluşturduğumuz label ve buton bu layout içerisine yerleştiriyoruz.
24. Satır = Layout'u tanımladığımız window isimli Widget'a atıyoruz.
25. Satır = Window'u görünür yapıyoruz.
26. Satır = Uygulamamızı çalıştırıyoruz.

Alıştırmalar:
1. 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.

2. Çıkış isminde bir buton oluşturun ve bu butona tıklandığında programın kapatılmasını sağlayın.


Kaynaklar:
İndirme linklerini görebilmek için sitemize üye ol manız veya giriş yapmanız gerekiyor.Sitemize üyelikler ücretsizdir!
İndirme linklerini görebilmek için sitemize üye ol manız veya giriş yapmanız gerekiyor.Sitemize üyelikler ücretsizdir!
İndirme linklerini görebilmek için sitemize üye ol manız veya giriş yapmanız gerekiyor.Sitemize üyelikler ücretsizdir!



Ara
Cevapla


[-]
Hızlı Cevap

İnsan Doğrulama:
Aşağıda görünen onay kutusunu işaretleyiniz. Bu işlem otomatik spam kayıtları önlemek için kullanılır.

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  PyQt Class Kullanımı efsane 0 1,472 02-06-2017, Saat: 12:03
Son Yorum: efsane
  PyQt Grid Layout (Izgara Pencere Düzeni) efsane 0 1,549 02-06-2017, Saat: 11:59
Son Yorum: efsane
  PyQt Pencere Düzenleri efsane 0 1,478 02-06-2017, Saat: 11:41
Son Yorum: efsane
  Merhaba PyQt efsane 0 1,482 02-06-2017, Saat: 11:25
Son Yorum: efsane
  PyQt giriş efsane 0 1,487 02-06-2017, Saat: 10:48
Son Yorum: efsane

Digg   Delicious   Reddit   Facebook   Twitter   StumbleUpon  


Konuyu Okuyanlar:
1 Ziyaretçi

   
Türkçe Çeviri: MCTR, Forum Yazılımı: MyBB, © 2002-2019 MyBB Group.  



Merih Forum® bilgi paylaşım platformu. 2015-2019 Tüm hakları saklıdır.