Python Belgelerim
  • Kapak
  • Django ile Çevirimiçi Ziyaretçi Sayacı Yapımı
  • elementtree Modülü
  • tarfile Modülü
  • zipfile Modülü
  • Python'da Kaynak Kodları Gizlemek
  • Pygame ile Oyun Programlama - Giriş
  • Pygame ile Oyun Programlama - display Modülü
  • Pygame ile Oyun Programlama - draw Modülü
  • Pygame ile Oyun Programlama - surface Modülü
  • Pygame ile Oyun Programlama - image Modülü
  • Pygame ile Oyun Programlama - font Modülü
  • Pygame ile Oyun Programlama - event Modülü
  • Pygame ile Oyun Programlama - rect Modülü
  • Pygame ile Oyun Programlama - music Modülü
  • Pygame ile Oyun Programlama - mixer Modülü
  • Pygame ile Oyun Programlama - time Modülü
  • Pygame ile Oyun Programlama - Sprite 1. Bölüm
  • Pygame ile Oyun Programlama - Sprite 2. Bölüm
  • Pygame ile Oyun Programlama - Sprite 3. Bölüm
  • Pygame ile Oyun Programlama - Sprite 4. Bölüm Son
  • pymunk 2B Fizik Kütüphanesi – Bölüm 1
  • pymunk 2B Fizik Kütüphanesi – Bölüm 2 Son
  • QThread ile QProgressBar Kullanımında Uygulamanın Çökmesi
  • QSettings Sınıfı Kullanımı
  • QLineEdit ile Otomatik ve Sekme ile Tamamlama
  • Qt Designer Kullanımı
  • PyQt Uygulamasında Çoklu Dil Desteği
  • PyQt'de Eski ve Yeni Sinyal Yapısı ve Kendi Sinyalimizi Oluşturmak
  • PyQt5 ile Değişken Parametreli Sinyal Oluşturmak
  • Python da Sonsuz Alt Kategori Sıralama
  • Python ile Hole Punching Yöntemi
Powered by GitBook
On this page

Was this helpful?

QLineEdit ile Otomatik ve Sekme ile Tamamlama

QLineEdit’e girdiğimiz bilgiyi kontrol ederek string verilerden oluşan bir listede arama yapıp eşleşen verileri listeleyebiliriz. Bu sayede; bir arama işlemi yapıyorsanız geçmiş kaydı tutabilirsiniz.

Listede arama yapıp eşleşen sonuçları bulan sınıf ise QCompleter'dir. Bu sınıfa vereceğimiz bir liste argümanı ile QLineEdit’te otomatik tamamlama yapabiliriz.

import sys
from PyQt4.QtGui import QApplication, QLineEdit, QCompleter

meyveler = ["elma", "armut", "karpuz", "ayva", "erik"]

class LineEdit(QLineEdit):
    def __init__(self, parent = None):
        QLineEdit.__init__(self, parent)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = LineEdit()
    completer = QCompleter(meyveler)
    window.setCompleter(completer)
    window.show()
    sys.exit(app.exec_())

Çok kısa bir kod ile işimizi hallettik. “meyveler” adında bir liste tanımladık ve bu listeye mevye isimlerini girdik. if blokunda ise “completer” adında bir QCompleter nesnesi oluşturduk ve argüman olarak “meyveler” adlı listeyi verdik. QLineEdit’in setCompleter() methoduyla QCompleter nesnemizi tanıttık. Yukarıdaki kodu çalıştırdığınızda girdiğini karaktere göre sonuçları QLineEdit’in altında listeleyecektir. Örneğin ilk karakteri “e” olarak girerseniz “elma” ve “erik” verileri alt alta sıralanacaktır.

Şimdi buna TAB yani sekme tuşuna basıldığında ilk sıradaki verinin QLineEdit’e yazılmasını sağlayalım…

import sys
from PyQt4.QtCore import Qt
from PyQt4.QtGui import QApplication, QLineEdit, QCompleter

meyveler = ["elma", "armut", "karpuz", "ayva", "erik"]

class LineEdit(QLineEdit):
    def __init__(self, parent = None):
        QLineEdit.__init__(self, parent)

    def keyPressEvent(self, event):
        if event.key() == Qt.Key_Tab:
            for item in meyveler:
                if item.startswith(self.text()):
                    self.setText(item)
                    break
            event.accept()
        else:
            QLineEdit.keyPressEvent(self, event)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = LineEdit()
    completer = QCompleter(meyveler)
    window.setCompleter(completer)
    window.show()
    sys.exit(app.exec_())

QLineEdit sınıfının keyPressEvent() methodunu kullanarak klavyeden basılan tuşları kontrol edecek kodlarımızı yazdık. Eğer klavyeden sekme tuşuna basarsak if bloku işlenecek ve listedeki elemanları sırayla kontrol edip girdiğiniz karakterlerle başlayan bir eleman varsa QLineEdit’e yazdırdık. Sekme tuşuna basılmaması durumunda da ekrana karakter yazmaya devam edebilmek için else blokunu yazdık. Eğer bu kısım olmaz ise klavyeden basılan hiç bir tuş ile QLineEdit’e veri girişi yapamayız.

Örnek olarak verdiğim listeyi veritabanından çektiğiniz verilerden de oluşturabilirsiniz ve aklınızı kullanarak girdiğiniz verileri veritabanına kayıt ederek kalıcı olmasını ve sonraki kullanımlarda hatırlanmasını sağlayabilirsiniz.

PreviousQSettings Sınıfı KullanımıNextQt Designer Kullanımı

Last updated 5 years ago

Was this helpful?