Buradasın
Python ile Telefon Rehberi Uygulaması Geliştirme Eğitimi
- Programlama
- Python
- Kullanıcı Arayüzü
- Nesne Yönelimli Programlama
- Veritabanı Yönetimi
- Telefon Rehberi
- SQLite
Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitmen tarafından sunulan Python programlama dili ile telefon rehberi uygulaması geliştirme eğitimidir. Eğitmen, adım adım bir adres defteri uygulamasının nasıl oluşturulacağını göstermektedir.
- Video, SQLite veritabanı entegrasyonundan başlayarak, veritabanı bağlantılarının nasıl kurulacağını, tablo oluşturma, veri kaydetme, listeleme, silme ve düzenleme işlemlerini anlatmaktadır. Ayrıca, Tkinter kütüphanesi kullanılarak kullanıcı arayüzü oluşturma, Treeview nesnesi kullanımı, çift tıklama olayları ve fotoğraf yükleme fonksiyonları gibi konular da ele alınmaktadır.
- Eğitim yaklaşık bir buçuk saat sürmekte olup, object-oriented programlama prensipleri, commit ve rollback kavramları, hata kontrolü ve kullanıcı deneyimini iyileştirme teknikleri gibi pratik bilgiler de içermektedir. Video boyunca "rehber_defter" adlı tabloya isim, telefon, fotoğraf yolu ve açıklama alanlarını içeren verilerin nasıl yönetileceği adım adım gösterilmektedir.
- Adres Defteri Projesine Veritabanı Ekleme
- Adres defteri projesine kaldığı yerden devam edilecek, daha önce grafik arayüzü oluşturulmuştu.
- SQLite kullanılarak arayüze girdiğimiz verilerin kaydedilmesi ve üzerinde değişiklik yapılması yapılacak.
- Veritabanı işlemleri için "import sqlite3" kütüphanesi eklenmiş durumda.
- 00:46Veritabanı Bağlantısı ve Tablo Oluşturma
- Veritabanı bağlantısı için "vt_baglan" adında bir fonksiyon oluşturuluyor.
- "connect" fonksiyonu ile "rehber.db" adında bir veritabanı oluşturuluyor veya var olan bağlanıyor.
- Veritabanında "defter" adında bir tablo oluşturuluyor ve id, isim, telefon, fotoğraf_yolu ve açıklama alanları ekleniyor.
- 05:05Veritabanı İşlemleri ve Kaydet Fonksiyonu
- Oluşturulan SQL komutu "cursor.execute" ile çalıştırılıyor ve değişiklikler "commit" ile kaydediliyor.
- Program çalıştırıldığında "rehber.db" veritabanı ve içinde "defter" tablosu oluşuyor.
- Yeni kayıt ekle düğmesine basıldığında verilerin veritabanına kaydedilmesi için "kaydet" fonksiyonu oluşturuluyor.
- 10:24Kayıt Fonksiyonu Yazımı
- Kaydetme fonksiyonu yazarak "defter" tablosuna veri ekleme işlemi gerçekleştirilecek.
- Tabloya "isim", "numara", "fotoğraf" ve "not" alanlarına değerler eklenecek, "id" alanı auto increment olarak ayarlanmış olduğu için dikkate alınmayacak.
- Veritabanı sorgusunda tırnak işaretleri ve slash işaretleri kullanılarak string değerlerin doğru şekilde işlenmesi sağlanacak.
- 12:57Veri Değişkenlerinin Tanımlanması
- Metin kutularına girilen dataları saklamak için ana fonksiyon içerisinde değişkenler tanımlanacak.
- Tkinter kütüphanesindeki StringVar sınıfı kullanılarak isim, numara, fotoğraf ve not için değişkenler oluşturulacak.
- Değişkenlerin isimleri "var_isim", "var_numara", "var_foto" ve "var_not" şeklinde olacak.
- 14:51Değişkenlere Erişim ve Veri Aktarımı
- Kaydet fonksiyonunda "self" anahtar kelimesi kullanılarak ana sınıfın tüm değişkenlerine erişim sağlanacak.
- "self.sahip" değişkeni kullanılarak ana sınıfın değişkenlerine erişim sağlanacak.
- "self.sahip.var_isim.get()" şeklinde metin kutularındaki verilere erişilecek.
- 17:43Veri Giriş Frame'inde Eşleştirme
- StringVar değişkenleri ile entry'ler arasında bağlantı kurulması gerekiyor.
- Entry'lerin "variable" özelliği kullanılarak StringVar değişkenleriyle eşleştiriliyor.
- Bu bağlantı sayesinde entry'lerden alınan veriler StringVar değişkenlerine aktarılıyor.
- 21:00Kayıt İşleminin Tamamlanması
- Kaydet fonksiyonunda alınan veriler veritabanına ekleniyor.
- Kayıt işlemi başarılı olursa veritabanı güncelleniyor, başarısız olursa program hata verip kırılıyor.
- Kayıt işlemi sonrası verilerin listelenmesi için bir tazeleme işlemi yapılması gerekiyor.
- 23:07Listeleme Fonksiyonu
- Listeleme işlemi için ayrı bir fonksiyon yazılacak.
- Listele fonksiyonunda önce mevcut kayıtlar temizleniyor.
- Küçük programlarda tüm listeyi yeniden getirmek kolay bir yöntem olarak kullanılıyor.
- 24:48SQL Sorgusu ve Veri Ekleme
- SQL sorgusu ile tablodaki tüm verileri seçmek için "SELECT * FROM defter" komutu kullanılıyor.
- SQL sorgularında veri değişikliği yapılmadığı için sonuç kümesi doğrudan getirilir ve bu sonuçlar bir döngüyle TV nesnesine aktarılır.
- TV nesnesine veriler eklendiğinde "insert" komutu kullanılır ve veriler belirli sütunlara yerleştirilir.
- 29:09Nesne Yönelik Programlama ve Bağlantılar
- Nesne yönelimli programlamada "self" anahtar kelimesi kullanılarak sınıfın üyelerine erişim sağlanır.
- Nesneler arasında bağlantı kurmak için önce bağlantı fonksiyonu oluşturulmalı, sonra frameler oluşturulmalıdır.
- Pencere nesnesi, App sınıfından türetilmiş bir nesne olup, sahip değişkeni bu pencere nesnesine referans olarak kullanılır.
- 33:46Kayıt Silme İşlemi
- Kayıt silme işlemi için önce kullanıcıdan onay almak için mesaj kutusu kullanılır.
- Silinecek kayıtların ID'leri TV nesnesinin selection özelliği üzerinden alınır.
- Silme işlemi için "DELETE FROM defter" komutu kullanılarak seçili kayıtlar veritabanından silinir.
- 39:21Kayıt Silme İşlemi
- List frame içindeki TV nesnesine ulaşarak silinecek kayıtları kontrol edebiliyoruz.
- Silme işlemi için delete komutu kullanılıyor ancak doğrudan ID ile veritabanından data silinemiyor.
- Satır numarası biliniyor ve bu sayede satıra ait sütunlardaki dataları elde edebiliyoruz.
- 41:03SQL Sorgusu Oluşturma
- Silme komutu için bir string oluşturuluyor ve "delete from defter" kullanılıyor.
- Tablodaki her şeyi silmemek için doğru şart yazılması gerekiyor.
- TV nesnesinin dataları dizi halinde getiriliyor ve istenen sütun değerleri bu diziden alınabiliyor.
- 43:45Silme İşleminin Tamamlanması
- SQL sorgusu execute edilerek veritabanından silme işlemi gerçekleştiriliyor.
- Commit işlemi yaparak değişiklikler kaydediliyor.
- Tablodan silinen kayıtların ayrıca Treeview'in içindeki kayıtlarından da silinmesi gerekiyor.
- 48:44Kayıt Düzenleme İşlemi
- Kayıt düzenleme işlemi daha zor çünkü önce kayıt aktarılması, sonra değişiklik yapılması ve kaydetme işlemi gerekiyor.
- Yeni kayıt eklerken insert, mevcut kaydı güncellerken update kullanılıyor.
- Kayıt aktarma fonksiyonu yazarak seçili olan satırın verilerini veri giriş alanlarına aktarılıyor.
- 50:06Kayıt Düzenleme Fonksiyonu
- Kayıt aktarma fonksiyonunda seçili olan satırın verileri alınıyor.
- Seçili satırdaki veriler Treeview'dan alınarak penceredeki değişkenlere aktarılıyor.
- Program yazarken kodun daha düzenli ve az olması için foreach döngüleri kullanılabilir, ancak aşırıya kaçırılırsa program yazmayı uzatabilir.
- 54:15Kod Hatası ve Çözümü
- Kullanılan bir kodda hata tespit ediliyor ve "metot yanlış kullanıldı" hatası alınıyor.
- Hata, bir fonksiyonun dizinin içinden eleman alır gibi davranıldığı için oluşuyor.
- Hata düzeltildikten sonra kayıt düzenleme işlemi çalışır hale geliyor.
- 56:06Kullanıcı Deneyimi İyileştirmesi
- Kullanıcı deneyimi (user experience) açısından daha sezgisel ve anlaşılır bir çözüm aranıyor.
- Çift tıklama ile kayıt aktarım ve düzenleme işleminin daha etkili bir şekilde yapılması planlanıyor.
- Bu için list frame içinde çift tıklama olayına bind ile ilişkilendirme yapılacak.
- 57:18Çift Tıklama Olayı Uygulaması
- Bind yöntemi kullanılarak çift tıklama olayı list frame içinde ilişkilendiriliyor.
- Menü frame'in tüm klas için tanınabilir hale getirilmesi için "self.menu_frame" kullanılıyor.
- Kayıt aktar fonksiyonu kayıt güncelle olarak yeniden tanımlanıyor.
- 59:45Parametre Hatası ve Çözümü
- Çift tıklama olayında "bir parametre verildi fakat iki verilmeliydi" hatası alınıyor.
- Bind fonksiyonu çalıştığında hangi nesnenin tıklandığına ilişkin bilgileri de gönderdiği için fonksiyona ek parametre ekleniyor.
- Çift tıklama ile kayıt aktarım işlemi başarıyla gerçekleşiyor.
- 1:02:20Kayıt Güncelleme Fonksiyonu
- Kayıt güncelle fonksiyonu yazılacak ve hangi kayıt güncellenecek bilgisini saklamak gerekiyor.
- Güncelleme komutu yazılırken, isim, numara, fotoğraf ve not alanları belirtiliyor.
- Tüm kayıtları güncellemeden sadece belirli bir kaydı güncellemek için "where" komutu kullanılması gerektiği vurgulanıyor.
- 1:05:12Kayıt Düzenleme İşlemi
- Kayıt düzenleme işleminde sıraya dikkat edilmeli ve eski komutun neye benzediğini kontrol etmek önemlidir.
- Kayıt düzenleme işleminde, çift tıklanan kaydın ailesi saklanmalı ve güncelleme işlemi sonrası listedeki listele fonksiyonu çağrılmalıdır.
- Kayıt düzenleme işleminde sadece ID'si belirtilen kayıt güncellenir, bu nedenle ID kontrolü yapılmalıdır.
- 1:09:19Program Optimizasyonu
- Menü frame'e ilk geldiğimizde düzenlenecek kayıt olup olmadığını kontrol etmek için "düzenlenen_id" değişkeni tanımlanmalıdır.
- Kayıt düzenleme işlemi sonrası entry'lerin boşaltılması ve düzenlemeyi kaydettiğimizde yeni düzenleme yapılmadığını belirtmek için fonksiyon oluşturulmalıdır.
- Aynı kodun iki kez yazılmasından kaçınmak için fonksiyon kullanmak daha güvenlidir.
- 1:12:46Kayıt Ekleme ve Silme İşlemleri
- Kayıt ekleme işleminde boş alanları engellemek için kontrol yapılabilir.
- Kayıt silme işleminde silinen ID yerine yeni kayıt yapılmamalıdır.
- Kayıt silme işlemi doğru çalıştığında programın düzgün çalıştığı görülür.
- 1:14:02İsim Göre Sıralama
- İsim göre sıralama düğmesi için sırala fonksiyonu çağrılmalıdır.
- Listele fonksiyonuna "order" parametresi eklenerek sıralama yapmak için gerekli değişiklikler yapılmalıdır.
- Listele fonksiyonunda "order by" ifadesi kullanılarak sıralama yapılmalıdır.
- 1:17:07Göz At Fonksiyonu
- Göz at fonksiyonu için veri girişinin içerisine bir buton eklenmelidir.
- Resim seç fonksiyonu oluşturulup dosya seçme işlemi yapılmalıdır.
- Mevcut pengu resmi başka resimlerle değiştirilebilir.
- 1:18:43Resim Seç Fonksiyonu Oluşturma
- Resim seç fonksiyonu oluşturulacak ve hangi dosyanın seçildiği tutacak bir değişken yapılacak.
- Diyalog faydalı fonksiyonu kullanılarak kullanıcıdan hangi dosyayı seçmek istediğini sorulacak.
- Fotoğrafı değiştirmek için gerekli işlemi yapmak için yeni bir fonksiyon yazılacak.
- 1:20:16Fotoğraf Değiştirme İşlemi
- Dosya seçildiğinde resmin ismi görüntüleniyor ancak resim henüz değiştirilmiyor.
- Photo frame'in içerisinde "foto değiştir" isminde bir fonksiyon yazılacak.
- Fotoğrafı yükleyip label'in içerisine koyma işlemi yapılacak.
- 1:23:30Kod Hatalarının Giderilmesi
- Foto değiştir fonksiyonu çağrılıyor ancak fotoğraf değişmiyor.
- İki benzer dosyayı aynı anda açmak sorunu yaratıyor.
- Fotoğraf seçildiğinde doğru şekilde değişiyor.
- 1:28:47Kapanış
- Bir buçuk saatlik bir kayıt tamamlanıyor.
- Sorular için iletişim bilgileri paylaşılıyor.
- Teams üzerinden de erişilebileceği belirtiliyor.