import sqlite3 from PySide6 import QtWidgets, QtGui, QtCore from PySide6.QtCore import QRegularExpression, Qt from datetime import datetime import pandas as pd from PySide6.QtWidgets import ( QCheckBox, QDialogButtonBox, QDialog, QListWidget, QListWidgetItem, QLineEdit, QPushButton, QHBoxLayout, QVBoxLayout, QFileDialog, QMessageBox, QMainWindow, QWidget ) # SQLite tarih adaptörleri def adapt_date(date): return date.isoformat() if date else None def convert_date(text): return datetime.fromisoformat(text) if text else None def veritabani_baglan(): sqlite3.register_adapter(datetime, adapt_date) sqlite3.register_converter("DATE", convert_date) conn = sqlite3.connect('cek_takip.db', detect_types=sqlite3.PARSE_DECLTYPES) c = conn.cursor() c.execute('''CREATE TABLE IF NOT EXISTS cekler (borclu TEXT, kesideci TEXT, vkn_tc TEXT, banka TEXT, banka_subesi TEXT, cek_seri_no TEXT PRIMARY KEY, -- Çek Seri No birincil anahtar vade_tarihi DATE, tutar REAL, durum TEXT, cek_giris_tarihi DATE, cek_cikis_tarihi DATE)''') conn.commit() conn.close() class CekTakipApp(QtWidgets.QWidget): def __init__(self): super().__init__() self.setWindowTitle("Çek Takip Programı") self.setGeometry(100, 100, 900, 600) # Arka plan rengi self.setStyleSheet(""" background-color: #f0f8ff; /* Daha canlı arka plan rengi */ font-family: Arial, sans-serif; """) self.initUI() self.show_upcoming_checks() def initUI(self): layout = QtWidgets.QVBoxLayout() # Başlık title_label = QtWidgets.QLabel("Çek Takip Programı") title_label.setFont(QtGui.QFont("Arial", 24, QtGui.QFont.Bold)) title_label.setStyleSheet("color: #2c3e50;") # Başlık rengi layout.addWidget(title_label) # Arama çubuğu search_layout = QtWidgets.QHBoxLayout() self.arama_entry = QtWidgets.QLineEdit(self) self.arama_entry.setPlaceholderText("Arama") self.arama_entry.setStyleSheet("padding: 5px; border-radius: 5px; border: 1px solid #2980b9;") layout = QtWidgets.QVBoxLayout(self) search_layout.addWidget(self.arama_entry) # Arama kutusunu ayarla self.setup_search() arama_button = QtWidgets.QPushButton("Ara", self) arama_button.setStyleSheet("background-color: #2980b9; color: white; border-radius: 5px; padding: 5px;") arama_button.clicked.connect(self.cek_arama) search_layout.addWidget(arama_button) layout.addLayout(search_layout) # Form alanları form_layout = QtWidgets.QFormLayout() self.kimden_alindi_entry = QtWidgets.QLineEdit(self) self.kime_ait_entry = QtWidgets.QLineEdit(self) self.firma_no_entry = QtWidgets.QLineEdit(self) self.banka_entry = QtWidgets.QLineEdit(self) self.banka_subesi_entry = QtWidgets.QLineEdit(self) self.cek_seri_no_entry = QtWidgets.QLineEdit(self) self.vade_tarihi_entry = QtWidgets.QLineEdit(self) self.tutar_entry = QtWidgets.QLineEdit(self) self.durum_entry = QtWidgets.QLineEdit(self) self.verildigi_tarih_entry = QtWidgets.QLineEdit(self) self.cikis_tarihi_entry = QtWidgets.QLineEdit(self) # Tarih alanları için doğrulama self.vade_tarihi_entry.setPlaceholderText("GG/AA/YYYY") self.verildigi_tarih_entry.setPlaceholderText("GG/AA/YYYY") self.cikis_tarihi_entry.setPlaceholderText("GG/AA/YYYY (opsiyonel)") form_layout.addRow("Borçlu", self.kimden_alindi_entry) form_layout.addRow("Keşideci", self.kime_ait_entry) form_layout.addRow("Keşideci VKN/TC", self.firma_no_entry) form_layout.addRow("Banka", self.banka_entry) form_layout.addRow("Banka Şubesi", self.banka_subesi_entry) form_layout.addRow("Çek Seri No", self.cek_seri_no_entry) form_layout.addRow("Vade Tarihi", self.vade_tarihi_entry) form_layout.addRow("Tutar", self.tutar_entry) form_layout.addRow("Durum", self.durum_entry) form_layout.addRow("Çek Giriş Tarihi", self.verildigi_tarih_entry) form_layout.addRow("Çek Çıkış Tarihi", self.cikis_tarihi_entry) for i in range(form_layout.rowCount()): form_layout.itemAt(i, QtWidgets.QFormLayout.LabelRole).widget().setStyleSheet("color: #2980b9;") form_layout.itemAt(i, QtWidgets.QFormLayout.FieldRole).widget().setStyleSheet("padding: 5px; border-radius: 5px; border: 1px solid #2980b9;") layout.addLayout(form_layout) kaydet_button = QtWidgets.QPushButton("Kaydet", self) kaydet_button.setStyleSheet("background-color: #27ae60; color: white; border-radius: 5px; padding: 5px;") kaydet_button.clicked.connect(self.cek_kaydet) layout.addWidget(kaydet_button) excel_button = QtWidgets.QPushButton("Excel'e Aktar", self) excel_button.setStyleSheet("background-color: #3498db; color: white; border-radius: 5px; padding: 5px;") excel_button.clicked.connect(self.export_to_excel) layout.addWidget(excel_button) sil_button = QtWidgets.QPushButton("Sil", self) sil_button.setStyleSheet("background-color: #c0392b; color: white; border-radius: 5px; padding: 5px;") sil_button.clicked.connect(self.cek_sil) layout.addWidget(sil_button) ortalama_vade_button = QtWidgets.QPushButton("Ortalama Vade Hesapla", self) ortalama_vade_button.setStyleSheet("background-color: #f39c12; color: white; border-radius: 5px; padding: 5px;") ortalama_vade_button.clicked.connect(self.ortalama_vade_hesapla) layout.addWidget(ortalama_vade_button) # Treeview (Tablo) için alan self.cek_table = QtWidgets.QTableWidget(self) self.cek_table.setColumnCount(11) # Kolon sayısını güncelledik self.cek_table.setHorizontalHeaderLabels([ "Borçlu", "Keşideci", "Firma No", "Banka", "Banka Şubesi", "Çek Seri No", "Vade Tarihi", "Tutar", "Durum", "Çek Giriş Tarihi", "Çek Çıkış Tarihi" ]) self.cek_table.setSortingEnabled(True) # Sıralamayı etkinleştir self.cek_table.setStyleSheet("background-color: white; alternate-background-color: #f0f0f0;") # Tablo renkleri layout.addWidget(self.cek_table) self.setLayout(layout) # Alanlara yalnızca sayılar girilmesini sağlamak için doğrulama ekle self.tutar_entry.setValidator(QtGui.QDoubleValidator(0.01, 99999.99, 2, self)) # Tutar için # VKN/TC için regex doğrulayıcı (11 basamaklı sayı) self.firma_no_entry.setValidator(QtGui.QRegularExpressionValidator(QRegularExpression(r"^\d{11}$"), self)) # Tabloda sağ tıklama ile silme self.cek_table.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.cek_table.customContextMenuRequested.connect(self.context_menu) def context_menu(self, pos): menu = QtWidgets.QMenu(self) copy_action = menu.addAction("Kopyala") delete_action = menu.addAction("Sil") copy_action.triggered.connect(self.cek_kopyala) delete_action.triggered.connect(self.cek_sil_from_context) menu.exec(self.cek_table.mapToGlobal(pos)) def cek_sil_from_context(self): selected_rows = self.cek_table.selectionModel().selectedRows() if not selected_rows: QtWidgets.QMessageBox.warning(self, "Hata", "Silinecek çekleri seçin.") return serial_nos = [self.cek_table.item(row.row(), 5).text() for row in selected_rows] # Çek Seri No sütunu self.cek_sil(serial_nos) def load_checks(self): conn = sqlite3.connect('cek_takip.db') c = conn.cursor() c.execute("SELECT * FROM cekler") rows = c.fetchall() conn.close() # Önceki verileri temizle self.cek_table.setRowCount(0) for row in rows: row_position = self.cek_table.rowCount() self.cek_table.insertRow(row_position) for column, data in enumerate(row): self.cek_table.setItem(row_position, column, QtWidgets.QTableWidgetItem(str(data))) def export_to_excel(self): # Kullanıcının hangi sütunları seçmek istediğini belirlemesi için bir pencere aç column_dialog = QDialog(self) column_dialog.setWindowTitle("Hangi Verileri Aktarmak İstiyorsunuz?") column_layout = QVBoxLayout(column_dialog) # Sütun başlıklarını listele columns = [ "Borçlu", "Keşideci", "VKN/TC", "Banka", "Banka Şubesi", "Çek Seri No", "Vade Tarihi", "Tutar", "Durum", "Çek Giriş Tarihi", "Çek Çıkış Tarihi" ] checkboxes = [QCheckBox(column) for column in columns] # Tüm kutuları ekle for checkbox in checkboxes: column_layout.addWidget(checkbox) # Butonları ekle button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) column_layout.addWidget(button_box) button_box.accepted.connect(column_dialog.accept) button_box.rejected.connect(column_dialog.reject) if column_dialog.exec() == QDialog.Accepted: selected_columns = [column for checkbox, column in zip(checkboxes, columns) if checkbox.isChecked()] # Kayıtları seçmek için bir pencere aç record_dialog = QDialog(self) record_dialog.setWindowTitle("Hangi Kayıtları Aktarmak İstiyorsunuz?") record_layout = QVBoxLayout(record_dialog) # Arama çubuğu ekle search_bar = QLineEdit() search_bar.setPlaceholderText("Kayıtları arayın...") record_layout.addWidget(search_bar) # Mevcut çekleri listele self.list_widget = QListWidget() self.list_widget.setSelectionMode(QListWidget.MultiSelection) conn = sqlite3.connect('cek_takip.db') c = conn.cursor() c.execute("SELECT * FROM cekler") rows = c.fetchall() conn.close() # Liste widget'ına çekleri ekle for row in rows: item_text = f"{row[0]} - {row[5]} - {row[9]} - {row[8]}" # Borçlu - Çek Seri No - Çek Çıkış Tarihi - Durum formatında göster item = QListWidgetItem(item_text) self.list_widget.addItem(item) record_layout.addWidget(self.list_widget) # Arama çubuğu için olay dinleyicisi def filter_list(): search_term = search_bar.text().lower() for i in range(self.list_widget.count()): item = self.list_widget.item(i) item.setHidden(search_term not in item.text().lower()) search_bar.textChanged.connect(filter_list) # Tümünü seç / Tümünü deseç butonları button_layout = QHBoxLayout() select_all_button = QPushButton("Tümünü Seç") deselect_all_button = QPushButton("Tümünü Deselect") button_layout.addWidget(select_all_button) button_layout.addWidget(deselect_all_button) record_layout.addLayout(button_layout) # Düzgün seçim işlevselliği select_all_button.clicked.connect( lambda: [self.list_widget.item(i).setSelected(True) for i in range(self.list_widget.count())]) deselect_all_button.clicked.connect( lambda: [self.list_widget.item(i).setSelected(False) for i in range(self.list_widget.count())]) # Butonları ekle record_button_box = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) record_layout.addWidget(record_button_box) record_button_box.accepted.connect(record_dialog.accept) record_button_box.rejected.connect(record_dialog.reject) if record_dialog.exec() == QDialog.Accepted: selected_records = [item.text() for item in self.list_widget.selectedItems()] # Dosya kaydetme diyalogunu aç file_name, _ = QtWidgets.QFileDialog.getSaveFileName(self, "Excel Dosyası Kaydet", "", "Excel Files (*.xlsx)") if file_name: try: # Seçilen kayıtların verilerini al selected_rows = [] conn = sqlite3.connect('cek_takip.db') c = conn.cursor() for record in selected_records: # Kayıtları parçala borclu, cek_seri_no, cek_cikis_tarihi, durum = record.split(" - ") borclu = borclu.strip() cek_seri_no = cek_seri_no.strip() cek_cikis_tarihi = cek_cikis_tarihi.strip() # Tarih formatını değiştir cek_cikis_tarihi = datetime.strptime(cek_cikis_tarihi, '%d/%m/%Y').date() # Hata ayıklama: Kayıtları kontrol et # SQL sorgusunu gerçekleştir c.execute( "SELECT * FROM cekler WHERE borclu = ? AND cek_seri_no = ? AND (cek_cikis_tarihi = ? OR cek_cikis_tarihi IS NULL OR cek_cikis_tarihi = '')", (borclu, cek_seri_no, cek_cikis_tarihi) ) fetched_rows = c.fetchall() selected_rows.extend(fetched_rows) conn.close() # DataFrame oluşturma if selected_rows: df = pd.DataFrame(selected_rows, columns=[ "Borçlu", "Keşideci", "VKN/TC", "Banka", "Banka Şubesi", "Çek Seri No", "Vade Tarihi", "Tutar", "Durum", "Çek Giriş Tarihi", "Çek Çıkış Tarihi" ]) # Seçilen sütunları içeren yeni bir DataFrame oluştur df_selected = df[selected_columns].copy() # DataFrame'in bir kopyasını oluştur # Boş değerleri "Veri Yok" ile doldur df_selected.fillna("Veri Yok", inplace=True) # Excel dosyasına yazma df_selected.to_excel(file_name, index=False) QtWidgets.QMessageBox.information(self, "Başarılı", "Veriler Excel dosyasına aktarıldı.") else: QtWidgets.QMessageBox.warning(self, "Hata", "Seçilen kayıtlar için veri bulunamadı.") except Exception as e: QtWidgets.QMessageBox.critical(self, "Hata", f"Excel'e aktarma sırasında hata: {e}") def cek_kopyala(self): selected_rows = self.cek_table.selectedIndexes() # Seçili hücreleri al if selected_rows: # Seçilen satırların indekslerini al rows_to_copy = set(index.row() for index in selected_rows) conn = sqlite3.connect('cek_takip.db') c = conn.cursor() for row in rows_to_copy: # Seçilen satırdan çek verilerini al cek_data = [ self.cek_table.item(row, col).text() if self.cek_table.item(row, col) else "" for col in range(self.cek_table.columnCount()) ] # Gerekli sütun sayısını kontrol et if len(cek_data) < 12: QtWidgets.QMessageBox.warning(self, "Hata", f"Satır {row + 1} için yeterli veri yok.") continue # Eğer yeterli veri yoksa bu satırı atla # Kopyalama işlemi için yeni bir kayıt ekle c.execute(""" INSERT INTO cekler (borclu, kesideci, vkn_tc, banka, banka_subesi, cek_seri_no, vade_tarihi, tutar, durum, cek_cikis_tarihi,) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) """, ( cek_data[1], cek_data[2], cek_data[3], cek_data[4], cek_data[5], cek_data[6], cek_data[7], cek_data[8], cek_data[9], cek_data[10], cek_data[11])) conn.commit() conn.close() # Çekleri yeniden yükle self.load_checks() QtWidgets.QMessageBox.information(self, "Kopyalama Başarılı", "Seçilen çekler başarıyla kopyalandı.") else: QtWidgets.QMessageBox.warning(self, "Hata", "Kopyalamak için bir veya daha fazla çek seçin!") def cek_sil(self): selected_rows = self.cek_table.selectedIndexes() # Seçili hücreleri al if selected_rows: # Seçilen satırların indekslerini al rows_to_delete = set(index.row() for index in selected_rows) # Kullanıcıdan silme onayı al reply = QtWidgets.QMessageBox.question(self, 'Silme Onayı', 'Seçilen çekleri silmek istediğinize emin misiniz?', QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.No) if reply == QtWidgets.QMessageBox.Yes: conn = sqlite3.connect('cek_takip.db') c = conn.cursor() # Seçilen satırların çek seri numaralarını bul for row in rows_to_delete: cek_seri_no = self.cek_table.item(row, 5).text() # 5. sütun Çek Seri No c.execute("DELETE FROM cekler WHERE cek_seri_no = ?", (cek_seri_no,)) conn.commit() conn.close() # Çekleri yeniden yükle self.load_checks() else: # Kullanıcı "Hayır" derse, işlem iptal edilir return else: QtWidgets.QMessageBox.warning(self, "Hata", "Silmek için bir veya daha fazla çek seçin!") def cek_kaydet(self): try: borclu = self.kimden_alindi_entry.text() kesideci = self.kime_ait_entry.text() vkn_tc = self.firma_no_entry.text() banka = self.banka_entry.text() banka_subesi = self.banka_subesi_entry.text() cek_seri_no = self.cek_seri_no_entry.text() vade_tarihi = self.vade_tarihi_entry.text() tutar = self.tutar_entry.text() durum = self.durum_entry.text() cek_giris_tarihi = self.verildigi_tarih_entry.text() cek_cikis_tarihi = self.cikis_tarihi_entry.text() # Tarih doğrulama datetime.strptime(vade_tarihi, "%d/%m/%Y") # Vade tarihi datetime.strptime(cek_giris_tarihi, "%d/%m/%Y") # Çek giriş tarihi if cek_cikis_tarihi: datetime.strptime(cek_cikis_tarihi, "%d/%m/%Y") # Çek çıkış tarihi # Onay mesajı reply = QtWidgets.QMessageBox.question(self, "Onay", "Çek kaydedilecek. Devam etmek istiyor musunuz?", QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.No) if reply == QtWidgets.QMessageBox.Yes: conn = sqlite3.connect('cek_takip.db') c = conn.cursor() c.execute( "INSERT INTO cekler (borclu, kesideci, vkn_tc, banka, banka_subesi, cek_seri_no, vade_tarihi, tutar, durum, cek_giris_tarihi, cek_cikis_tarihi) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", (borclu, kesideci, vkn_tc, banka, banka_subesi, cek_seri_no, vade_tarihi, tutar, durum, cek_giris_tarihi, cek_cikis_tarihi)) conn.commit() conn.close() # Giriş alanlarını temizle self.kimden_alindi_entry.clear() self.kime_ait_entry.clear() self.firma_no_entry.clear() self.banka_entry.clear() self.banka_subesi_entry.clear() self.cek_seri_no_entry.clear() self.vade_tarihi_entry.clear() self.tutar_entry.clear() self.durum_entry.clear() self.verildigi_tarih_entry.clear() self.cikis_tarihi_entry.clear() # Çekleri yeniden yükle self.load_checks() self.show_upcoming_checks() QtWidgets.QMessageBox.information(self, "Başarılı", "Çek kaydedildi.") except sqlite3.IntegrityError: QtWidgets.QMessageBox.warning(self, "Hata", "Bu Çek Seri Numarası zaten mevcut.") except ValueError: QtWidgets.QMessageBox.warning(self, "Hata", "Tarih formatı geçersiz. Lütfen GG/AA/YYYY formatında girin.") except Exception as e: QtWidgets.QMessageBox.critical(self, "Hata", f"Kaydetme işlemi sırasında bir hata oluştu: {e}") def cek_arama(self): search_query = self.arama_entry.text().strip() if not search_query: QtWidgets.QMessageBox.warning(self, "Uyarı", "Lütfen bir arama terimi girin.") return try: conn = sqlite3.connect('cek_takip.db') c = conn.cursor() # Kullanıcının girdiği arama terimini küçük harfe çevir search_query_lower = search_query.lower() normalized_query = search_query_lower.translate(str.maketrans("ıiğğçşö", "iiggçso")) c.execute(""" SELECT * FROM cekler WHERE lower(borclu) LIKE ? OR lower(kesideci) LIKE ? OR lower(vkn_tc) LIKE ? """, ('%' + normalized_query + '%', '%' + normalized_query + '%', '%' + normalized_query + '%')) results = c.fetchall() conn.close() if results: self.update_table(results) # Sonuç varsa tabloyu güncelle self.add_show_all_button() # "Tümünü Göster" butonunu ekle else: QtWidgets.QMessageBox.information(self, "Sonuç Yok", "Arama kriterlerine uygun kayıt bulunamadı.") except Exception as e: QtWidgets.QMessageBox.critical(self, "Hata", f"Arama işlemi sırasında bir hata oluştu: {e}") def add_show_all_button(self): show_all_button = QPushButton("Tümünü Göster") show_all_button.clicked.connect(self.show_all_records) # Butonun stilini ayarlayın show_all_button.setStyleSheet(""" QPushButton { background-color: #4CAF50; /* Yeşil arka plan */ color: white; /* Beyaz metin */ border: none; /* Kenarlık yok */ padding: 10px 20px; /* İçerik boşluğu */ border-radius: 5px; /* Kenar yuvarlama */ font-size: 16px; /* Yazı boyutu */ } QPushButton:hover { background-color: #45a049; /* Mouse ile üzerine gelince arka plan rengi */ } QPushButton:pressed { background-color: #3e8e41; /* Buton tıklandığında arka plan rengi */ } """) # Butonu kullanıcı arayüzüne ekle self.layout().addWidget(show_all_button) def show_all_records(self): try: conn = sqlite3.connect('cek_takip.db') c = conn.cursor() c.execute("SELECT * FROM cekler") all_records = c.fetchall() conn.close() self.update_table(all_records) # Tüm kayıtları tabloya yükle self.arama_entry.clear() # Arama giriş kutusunu temizle except Exception as e: QtWidgets.QMessageBox.critical(self, "Hata", f"Tüm kayıtları gösterme sırasında bir hata oluştu: {e}") # QLineEdit'e Enter tuşu ile arama yapma def setup_search(self): self.arama_entry.returnPressed.connect(self.cek_arama) def show_upcoming_checks(self): try: conn = sqlite3.connect('cek_takip.db') c = conn.cursor() c.execute("SELECT * FROM cekler") results = c.fetchall() conn.close() self.update_table(results) except Exception as e: QtWidgets.QMessageBox.critical(self, "Hata", f"Veri gösterme işlemi sırasında bir hata oluştu: {e}") def update_table(self, results): self.cek_table.setRowCount(0) for row in results: row_position = self.cek_table.rowCount() self.cek_table.insertRow(row_position) for column, data in enumerate(row): self.cek_table.setItem(row_position, column, QtWidgets.QTableWidgetItem(str(data))) def ortalama_vade_hesapla(self): selected_indexes = self.cek_table.selectedIndexes() # Seçili hücreleri al if not selected_indexes: QtWidgets.QMessageBox.warning(self, "Hata", "Önce bir veya daha fazla çek seçin.") return selected_rows = set(index.row() for index in selected_indexes) # Seçili satırları belirle toplam_vade = 0 gecersiz_tarih_sayisi = 0 # Geçersiz tarih sayısını tutmak için for row in selected_rows: vade_tarihi_item = self.cek_table.item(row, 6) # Vade tarihi, 7. sütun (index 6) if vade_tarihi_item: vade_tarihi = vade_tarihi_item.text() try: vade_tarihi_date = datetime.strptime(vade_tarihi, "%d/%m/%Y") if vade_tarihi_date < datetime.today(): gecersiz_tarih_sayisi += 1 print(f"Geçersiz tarih: {vade_tarihi} - Bugünden geçmiş!") # Konsola yazdır else: toplam_vade += (vade_tarihi_date - datetime.today()).days except ValueError: gecersiz_tarih_sayisi += 1 # Geçersiz tarih bulunduğunda sayıyı artır print(f"Geçersiz tarih: {vade_tarihi}") # Hatalı tarihleri konsola yazdır # Geçersiz tarih yoksa ortalama vade hesapla if len(selected_rows) - gecersiz_tarih_sayisi > 0: ortalama_vade = toplam_vade / (len(selected_rows) - gecersiz_tarih_sayisi) QtWidgets.QMessageBox.information(self, "Ortalama Vade", f"Ortalama vade: {ortalama_vade:.2f} gün") else: QtWidgets.QMessageBox.warning(self, "Hata", "Seçtiğiniz çeklerin tüm vade tarihleri geçersiz.") def clear_fields(self): for entry in [ self.kimden_alindi_entry, self.kime_ait_entry, self.firma_no_entry, self.banka_entry, self.banka_subesi_entry, self.cek_seri_no_entry, self.vade_tarihi_entry, self.tutar_entry, self.durum_entry, self.verildigi_tarih_entry, self.cikis_tarihi_entry]: entry.clear() if __name__ == '__main__': import sys veritabani_baglan() app = QtWidgets.QApplication(sys.argv) window = CekTakipApp() window.show() sys.exit(app.exec())