İlk denemem ve hüsran yardımlarına ihtiyacım var

Merhaba,
Yavaş yavaş ilerleme yaparak ve bol bol çözüm yaparak kah chat Gpt kah buradan yardım istiyorum.
Öğrenebilir miyim yapamaz mıyım tam emin değilim ama bismillah diyerek başladım.
ilk kod yapımına https://www.youtube.com/watch?v=n5PosAYtZhg&t=4211s buradaki video izleyerek yapmaya başladım (pytq5)

Aslında yazdığım kodun %80 85i videodan yaptım neredeyse hiç bir kodu tek başıma yazmadım.

Neyse fazla sıkmadan sorularıma geçeyim.

  1. fonksiyon yazma hakkında yardım…

Yukarıdaki gibi bi ilk alıştırma için bir şeyler karalamaya çalışıyorum.
ürün kodu sayısal ürün adı metinsel stok adet sayılan şeklinde gidiyor.

Kullanıcıdan gelen veriyi rakam olası, harf olması ve boş bırakılmaması için tek tek if else yaparak zorluyorum.

ama artık if else şimdilik işimi görüyor ama bunu fonksiyon kullanarak yapabilir miyim ve nasıl?

def kayit_ekle():
    urunKodu=ui.lineEdit.text()
    if not urunKodu.isdigit():
       QMessageBox.warning(None, "Uyarı", " Ürün koduna sadece rakam yazılabilir.")
       return
    urunAdi=ui.lineEdit_2.text().lower().capitalize().strip()
    if not urunAdi.isalpha():
       QMessageBox.warning(None, "Uyarı", " Ürün Adına sadece harf yazılabilir.")
       return
    
    birimFiyat=ui.lineEdit_3.text().strip()
    if not birimFiyat.isdigit():
       QMessageBox.warning(None, "Uyarı", " Birim fiyatına sadece rakam yazılabilir.")
       return
    stokMiktari=ui.lineEdit_4.text().strip()
    if not stokMiktari.isdigit():
       QMessageBox.warning(None, "Uyarı", " Stok Miktarına sadece rakam yazılabilir.")
       return
    urunAciklama=ui.lineEdit_5.text().lower().capitalize().strip()
    marka=ui.comboBox.currentText()
    kategori=ui.comboBox_2.currentText()
    if not urunKodu or not urunAdi or not urunAciklama or not birimFiyat or not stokMiktari or not marka or not kategori:
        QMessageBox.warning(None, "Uyarı", " Bilgiler boş bırakılamaz.")
        return
    else:
       urunKodu=int(urunKodu)
       birimFiyat=int(birimFiyat)
       stokMiktari=int(stokMiktari)

soru 2) Ürün ekle yapınca tablewidgette veriler anlık görünmesini nasıl yaparım? Şuanki programda ürün listele yapınca veritabanından veriler geliyor

soru 3 )tablewidget renklendirme yaptım ama ilk satır beyaz olduğundan sanki orada kocaman bir boşluk var hissiyatı veriyor. İlk satırı beyaz değilde gri renkten nasıl başlatabilirim?

ilk günkü sorularım bu kadar

python - PyQT5: How to use both QLineEdit: Validator and InputMask? - Stack Overflow

Girdilerinizi formatlı ve istenen biçimde almak için validator ve inputmask kullanbilirsiniz.

Bir event tanımlayın yada ekledikten sonra tablewidget i yeniden yazdıran alt rutininizi yeniden çağırın.

qt - How change the background color for a blank cell in QTableWidget - Stack Overflow

windget lerde backgraound color ayarlanabilir. Bunun dışında qt kullanıyorsanız tema kullanmayı da düşünebilirsiniz.

Yavaş yavaş çözeceğim gibi duruyor.

Malum veri girerken ilk harfi büyük yazsın istiyorum fakat i büyük yaparken I yazıyor yada tam tersi

urunAdi=ui.lineEdit_2.text().lower().capitalize().replace("i","İ").replace("ı","I")

Bu şekilde bir kod yazıyorum ama işe yaramıyor neden olabilir?

Eski QT’cilerden kim kaldı…

Eski QT’ciler ui kullanmaz, import ederdi.

Ah canım Türkçem, ne güzel bir dilsin, anası olmadığının dilini ne güzel belli ediyorsun…

def karakterBuyutmeFonksiyonu(self, girdi):
        return girdi.replace("i","İ").upper()


self.lineEdit.textChanged.connect(lambda: self.lineEdit.setText(self.karakterBuyutmeFonksiyonu(self.lineEdit.text())))

Bu şekilde kullanabilirsin. Türkçe karakter sıkıntısı yaşamazsın.