Python Masaüstü Uygulaması - 3: SQLite3 ile Kayıt Silme ve Filtreleme

kusha · 03 Ağustos 2026 · 6 dk okuma

Serinin bu son bölümünde, kayıt uygulamamıza silme onayı, şirkete göre filtreleme ekleyeceğiz ve uygulamayı çalıştırılabilir bir .exe dosyasına nasıl çevireceğinizi göreceğiz.

Silme Onayı Sormak

Yanlışlıkla veri kaybını önlemek için, silme işleminden önce kullanıcıya bir onay penceresi göstermek iyi bir alışkanlıktır:

from PyQt5.QtWidgets import QMessageBox

def kayit_sil(self):
    secili_satir = self.tbl1.currentRow()
    if secili_satir == -1:
        self.statusBar().showMessage("Lütfen silinecek kaydı seçin.", 3000)
        return

    silinecek_ad = self.tbl1.item(secili_satir, 0).text()

    cevap = QMessageBox.question(
        self, "Silme Onayı", "Bu kaydı silmek istediğinize emin misiniz?",
        QMessageBox.Yes | QMessageBox.No,
    )

    if cevap == QMessageBox.Yes:
        cursor.execute("DELETE FROM kayit WHERE ad = ?", (silinecek_ad,))
        baglanti.commit()
        self.statusBar().showMessage("Kayıt silindi.", 3000)
        self.kayit_listele()
  • self.tbl1.currentRow(), tabloda o an seçili olan satırın numarasını verir; hiçbir şey seçili değilse -1 döner — bu durumu kontrol etmek, kullanıcı bir şey seçmeden "Sil"e bastığında hata almanızı önler.
  • QMessageBox.question(...), "Evet/Hayır" seçenekli bir onay penceresi açar ve kullanıcının seçimini döndürür.

Silme Butonunu Bağlamak

self.btn2.clicked.connect(self.kayit_sil)

Şirkete Göre Filtreleme

def sirkete_gore_listele(self):
    secilen_sirket = self.cmb2.currentText()
    self.tbl1.setRowCount(0)

    cursor.execute("SELECT * FROM kayit WHERE sirket = ?", (secilen_sirket,))
    for satir_no, satir in enumerate(cursor.fetchall()):
        self.tbl1.insertRow(satir_no)
        for kolon_no, deger in enumerate(satir):
            self.tbl1.setItem(satir_no, kolon_no, QTableWidgetItem(str(deger)))

self.btn3.clicked.connect(self.sirkete_gore_listele)

Bu fonksiyon, önceki dersteki kayit_listele ile neredeyse aynıdır — tek fark, SQL sorgusuna WHERE sirket = ? koşulunun eklenmiş olmasıdır.

Uygulamayı .exe Dosyasına Çevirmek

Uygulamanızı Python kurulu olmayan bir bilgisayarda da çalıştırmak isterseniz, PyInstaller ile tek bir çalıştırılabilir dosyaya paketleyebilirsiniz:

pip install pyinstaller
pyinstaller --onefile --windowed main.py
  • --onefile, tüm bağımlılıkları tek bir .exe dosyasında toplar.
  • --windowed, uygulama çalışırken arkada bir konsol penceresi açılmasını engeller (masaüstü uygulamaları için uygundur).

Oluşan .exe dosyası dist/ klasöründe bulunur.

Sırada Ne Var?

Bu üç bölümlük masaüstü uygulaması serisini burada tamamlıyoruz. Sıradaki derste web scraping'e dönüp, BeautifulSoup ile bir web sitesinden güncel döviz kuru çekmeyi göreceğiz.