Merhabalar,
Bu videodakine benzer bir yazılım yapmaya çalışıyorum. Fakat bir hatam var. Çözebilmiş değilim. Videodan vb. kontrol ediyorum ama bulamadım.
(12) SQLite Kullanımı - QT Designer Kullanıcı Arayüzü - YouTube
Video bu.
Benim yazdığım kodlar ise:
baglan.py:
import sqlite3 as sql
from typing import final
def main():
try:
db = sql.connect("bilgiler.db")
print("Veri tabanına bağlanıldı.")
except:
print("Bağlantı hatası !!!!!")
finally:
db.close()
if __name__ == "__main__":
main()
tabloOlustur.py
import sqlite3 as sql
from typing import final
def main():
try:
db = sql.connect("Bilgiler.db")
cal = db.cursor()
sorg = "CREATE TABLE TBilgiler (urunno int, alacakkisiadsoyad txt, telno int, esya txt, parca txt, yapilacaklar txt, fiyat int)"
cal.execute(sorg)
print("Tablo olustu")
finally:
print("Tamam islem")
if __name__ == "__main__":
main()
Arayuz.py
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QTableWidgetItem, QHeaderView
from Ui_tamir import Ui_Dialog
import sys
import os
import sqlite3 as sql
os.system("python Baglan.py")
os.system("python TabloOlustur.py")
global urunno, alacakkisiadsoyad, telno, esya, parca, yapilacaklar, fiyat
class Window(QtWidgets.QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.ui = Ui_Dialog()
self.ui.setupUi(self)
self.formYukle()
self.ui.kaydetButon.clicked.connect(self.butonKaydetTiklandi)
self.ui.silButon.clicked.connect(self.sil)
def formYukle(self):
self.ui.eklenenlerTablo.clear()
self.ui.eklenenlerTablo.setColumnCount(7)
self.ui.eklenenlerTablo.setHorizontalHeaderLabels(("Urun NO", "Ad-soyad", "Telefon NO", "Esya", "Parca", "Yapilacaklar", "Fiyat"))
self.ui.eklenenlerTablo.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch)
db = sql.connect("bilgiler.db")
cur = db.cursor()
sorgu = "Select * from TBilgiler"
cur.execute(sorgu)
satirlar = cur.fetchall()
self.ui.eklenenlerTablo.setRowCount(len(satirlar))
for satirIndeks, satirVeri in enumerate(satirlar):
for sutunIndeks, sutunVeri in enumerate(satirVeri):
self.ui.eklenenlerTablo.setItem(satirIndeks, sutunIndeks, QTableWidgetItem(str(sutunVeri)))
def butonKaydetTiklandi(self):
urunno = self.ui.urunNoGiris.toPlainText()
alacakkisiadsoyad = self.ui.urunNoGiris_2.toPlainText()
telno = self.ui.telNoGiris.toPlainText()
esya = self.ui.esyaGiris.toPlainText()
parca = self.ui.parcaGiris.toPlainText()
yapilacaklar = self.ui.yapilacaklarGiris.toPlainText()
fiyat = self.ui.fiyatGiris.toPlainText()
try:
self.baglanti = sql.connect("bilgiler.db")
self.c = self.baglanti.cursor()
self.c.execute("INSERT INTO TBilgiler Values(?, ?, ?, ?, ?, ?, ?)", (urunno, alacakkisiadsoyad, telno, esya, parca, yapilacaklar, fiyat))
self.baglanti.commit()
self.c.close()
print("Başarılı", "bilgiler başarıyla gönderildi")
except:
print("Hata", "Hata !!!!!!")
def listeClick(self):
self.ui.esyaGiris.setText(self.ui.eklenenlerTablo.item(self.ui.eklenenlerTablo.currentRow(), 0).text())
self.ui.fiyatGiris.setText(self.ui.eklenenlerTablo.item(self.ui.eklenenlerTablo.currentRow(), 1).text())
self.ui.parcaGiris.setText(self.ui.eklenenlerTablo.item(self.ui.eklenenlerTablo.currentRow(), 2).text())
self.ui.telNoGiris.setText(self.ui.eklenenlerTablo.item(self.ui.eklenenlerTablo.currentRow(), 3).text())
self.ui.urunNoGiris.setText(self.ui.eklenenlerTablo.item(self.ui.eklenenlerTablo.currentRow(), 4).text())
self.ui.urunNoGiris_2.setText(self.ui.eklenenlerTablo.item(self.ui.eklenenlerTablo.currentRow(), 5).text())
self.ui.yapilacaklarGiris.setText(self.ui.eklenenlerTablo.item(self.ui.eklenenlerTablo.currentRow(), 6).text())
def sil(self):
uruno = self.ui.urunNoGiris.toPlainText()
self.baglanti = sql.connect("bilgiler.db")
self.c = self.baglanti.cursor()
self.c.execute("DELETE FROM TBilgiler where urunno = ?", (uruno, ))
self.baglanti.commit()
self.c.close()
self.baglanti.close()
print("Urun silindi")
self.sil()
self.formYukle()
def app():
app = QtWidgets.QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec_())
app()
Sorunlar:
-
Videoda bir bilgi eklendiğinde direktmen listeye ekleniyor. Benim o ekleneni görebilmem için programı yeniden açmam gerek. Yani canlı olarak eklemiyor.
-
Tablodan bilgi silinmiyor. Tablodan birini seçtikten sonra “Sil” butonuna basıyorum ve konsola “Urun silindi” diye spam atıyor ve ayrıca satır 86’da olan
self.sil()
kodunda hata veriyor.
Yardımcı olursanız sevinirim.