Python - Okuduğunuz kitapları kayıt edin

DisserF

Üye
21 Ağu 2016
201
1
83
Dünya
Merhaba ben DisserF. Python ile okuduğunuz kitapları kayıt edebileceğiniz bir uygulama yazdım. Umarım işinize yarar.

Python:
from tkinter import *



root = Tk()
root.title('Book Recorder')
root.geometry('925x500+300+200')
root.configure(bg="black")
root.resizable(False, False)


img = PhotoImage(file='D:\codes/okuduğunuz kitap/kitap.png')
Label(root, image=img, bg='black').place(x=550, y=50)

def kitap_kaydet():
    try:
        with open("kitaplar.txt", "a") as dosya:
            kitap_adi = kitap_adi_giris.get()
            dosya.write(kitap_adi + "\n")
        print("Kitap başarıyla kaydedildi.")
    except Exception as e:
        print("Hata oluştu:", str(e))

def kitap_listele():
    try:
        with open("kitaplar.txt", "r") as dosya:
            kitaplar = dosya.readlines()
            if not kitaplar:
                print("Henüz kaydedilmiş kitap yok.")
            else:
                listbox.delete(0, END)  # Clear existing listbox items
                for kitap in kitaplar:
                    listbox.insert(END, kitap.strip())
    except Exception as e:
        print("Hata oluştu:", str(e))

def kitap_listesini_temizle():
    try:
        with open("kitaplar.txt", "w") as dosya:
            dosya.write("")
        print("Kitap listesi başarıyla temizlendi.")
        listbox.delete(0, END)
    except Exception as e:
        print("Hata oluştu:", str(e))

def main():
    


    global kitap_adi_giris
    kitap_adi_giris = Entry(root, width=30, bg='white', fg='black', font=('Arial', 12))
    kitap_adi_giris.place(x=550, y=350)

    Button(root, width=39, pady=7, text='Kitap Kaydet', bg='black', fg='white', border=0, command=kitap_kaydet).place(x=550, y=380)
    Button(root, width=39, pady=7, text='Kaydedilen kitapları listele', bg='black', fg='white', border=0, command=kitap_listele).place(x=550, y=410)
    Button(root, width=39, pady=7, text='Çıkış', bg='black', fg='white', border=0, command=root.quit).place(x=550, y=440)
    Button(root, width=39, pady=7, text='Kitap listesini temizle', bg='black', fg='white', border=0, command=kitap_listesini_temizle).place(x=5, y=340)
    Label(root, width=39, pady=7, text='KİTAP LİSTESİ', bg='black', fg='white', border=0).place(x=95, y=20)


    global listbox
    listbox = Listbox(root, bg='white', fg='black', font=('Arial', 12), width=40, height=15)
    listbox.place(x=50, y=50)



if __name__ == "__main__":
    main()
    root.mainloop()


Uygulama görseli :
image.png


Teşekkürler.
 

Grimner

Adanmış Üye
28 Mar 2020
6,321
120
4,776
Merhaba ben DisserF. Python ile okuduğunuz kitapları kayıt edebileceğiniz bir uygulama yazdım. Umarım işinize yarar.

Python:
from tkinter import *



root = Tk()
root.title('Book Recorder')
root.geometry('925x500+300+200')
root.configure(bg="black")
root.resizable(False, False)


img = PhotoImage(file='D:\codes/okuduğunuz kitap/kitap.png')
Label(root, image=img, bg='black').place(x=550, y=50)

def kitap_kaydet():
    try:
        with open("kitaplar.txt", "a") as dosya:
            kitap_adi = kitap_adi_giris.get()
            dosya.write(kitap_adi + "\n")
        print("Kitap başarıyla kaydedildi.")
    except Exception as e:
        print("Hata oluştu:", str(e))

def kitap_listele():
    try:
        with open("kitaplar.txt", "r") as dosya:
            kitaplar = dosya.readlines()
            if not kitaplar:
                print("Henüz kaydedilmiş kitap yok.")
            else:
                listbox.delete(0, END)  # Clear existing listbox items
                for kitap in kitaplar:
                    listbox.insert(END, kitap.strip())
    except Exception as e:
        print("Hata oluştu:", str(e))

def kitap_listesini_temizle():
    try:
        with open("kitaplar.txt", "w") as dosya:
            dosya.write("")
        print("Kitap listesi başarıyla temizlendi.")
        listbox.delete(0, END)
    except Exception as e:
        print("Hata oluştu:", str(e))

def main():
   


    global kitap_adi_giris
    kitap_adi_giris = Entry(root, width=30, bg='white', fg='black', font=('Arial', 12))
    kitap_adi_giris.place(x=550, y=350)

    Button(root, width=39, pady=7, text='Kitap Kaydet', bg='black', fg='white', border=0, command=kitap_kaydet).place(x=550, y=380)
    Button(root, width=39, pady=7, text='Kaydedilen kitapları listele', bg='black', fg='white', border=0, command=kitap_listele).place(x=550, y=410)
    Button(root, width=39, pady=7, text='Çıkış', bg='black', fg='white', border=0, command=root.quit).place(x=550, y=440)
    Button(root, width=39, pady=7, text='Kitap listesini temizle', bg='black', fg='white', border=0, command=kitap_listesini_temizle).place(x=5, y=340)
    Label(root, width=39, pady=7, text='KİTAP LİSTESİ', bg='black', fg='white', border=0).place(x=95, y=20)


    global listbox
    listbox = Listbox(root, bg='white', fg='black', font=('Arial', 12), width=40, height=15)
    listbox.place(x=50, y=50)



if __name__ == "__main__":
    main()
    root.mainloop()


Uygulama görseli :
image.png


Teşekkürler.
Eline sağlık, yeni başlayanların referans alabileceği bir program.
 

Helmsys

Ar-Ge Ekibi Kıdemli
16 Mar 2022
1,492
25
1,653
Aslında fonksiyonlarının isimlerine göre hareket edip kodun tamamını o haliyle dizayn etmek okunabilirliği açısından önemli. Main fonksiyonun içeriğinde en başta global alanda tanımladığınız root örneğini(çünkü sınıftan obje üretip bunu root değişkenine atadınız. Artık root değişkenine "değişken" değilde "Tk sınıfının örneği" demeniz öğrenme sırasında size fayda sağlar. Daha sonra dilediğinizi söylersiniz çünkü işin aslını biliyor oluyorsunuz) main fonksiyonun içinde tanımlayıp işlem yapabilirsiniz. Tabii gerekli durumlarda fonksiyonlara argüman yoluyla gönderip değerlere ulaşabilirsiniz buda sizin yapacağınız şey.

Bunu yaptıktan sonra sadece main fonksiyonunu çağırırsınız ve çok daha temiz bir kod yazmış olursunuz.
Kolay gelsin.
Ayrıca sizin klasör yolunuzla aynı olmayan onlarca kullanıcı var bu gibi değişikliğin önüne geçmek için script içerisinde klasör oluşturun.

maalesefki atılabilecek bi ekran görüntüsü yok not defterine kopyalayıp .py olarak kaydettim ve açtığım vakit siyah ekran gelip kapanıyor hemen
Muhtemelen kullanılan png dosyasından ötürü hata veriyor olmalı. Scripti yazan arkadaşa bunu söylemeniz gerekli
 
13 Mar 2023
220
50
Star Stream
Aslında fonksiyonlarının isimlerine göre hareket edip kodun tamamını o haliyle dizayn etmek okunabilirliği açısından önemli. Main fonksiyonun içeriğinde en başta global alanda tanımladığınız root örneğini(çünkü sınıftan obje üretip bunu root değişkenine atadınız. Artık root değişkenine "değişken" değilde "Tk sınıfının örneği" demeniz öğrenme sırasında size fayda sağlar. Daha sonra dilediğinizi söylersiniz çünkü işin aslını biliyor oluyorsunuz) main fonksiyonun içinde tanımlayıp işlem yapabilirsiniz. Tabii gerekli durumlarda fonksiyonlara argüman yoluyla gönderip değerlere ulaşabilirsiniz buda sizin yapacağınız şey.

Bunu yaptıktan sonra sadece main fonksiyonunu çağırırsınız ve çok daha temiz bir kod yazmış olursunuz.
Kolay gelsin.
Ayrıca sizin klasör yolunuzla aynı olmayan onlarca kullanıcı var bu gibi değişikliğin önüne geçmek için script içerisinde klasör oluşturun.

Muhtemelen kullanılan png dosyasından ötürü hata veriyor olmalı. Scripti yazan arkadaşa bunu söylemeniz gerekli
bunun sebebi pngnin bende olmaması mı yani? neticede sadece kodu kopyaladım
 
13 Mar 2023
220
50
Star Stream
Exe şeklini buradan indirebilirsiniz eğer çalışmaz ise size kaynak kodlarını atacağım, özel mesaj yoluyla iletişime geçebilirsiniz.

Exe dosyası: İndir kitap rar

Virus Total: VirusTotal
Traceback (most recent call last):
File "kitap.py", line 12, in <module>
File "tkinter\__init__.py", line 4129, in __init__
File "tkinter\__init__.py", line 4074, in __init__
_tkinter.TclError: couldn't open "D:\codes/okuduğunuz kitap/kitap.png": no such file or directory
böyle bi hata alıyorum
 

TurkGokay

Uzman üye
4 Ara 2022
1,021
1
544
Kemalizm
Merhaba ben DisserF. Python ile okuduğunuz kitapları kayıt edebileceğiniz bir uygulama yazdım. Umarım işinize yarar.

Python:
from tkinter import *



root = Tk()
root.title('Book Recorder')
root.geometry('925x500+300+200')
root.configure(bg="black")
root.resizable(False, False)


img = PhotoImage(file='D:\codes/okuduğunuz kitap/kitap.png')
Label(root, image=img, bg='black').place(x=550, y=50)

def kitap_kaydet():
    try:
        with open("kitaplar.txt", "a") as dosya:
            kitap_adi = kitap_adi_giris.get()
            dosya.write(kitap_adi + "\n")
        print("Kitap başarıyla kaydedildi.")
    except Exception as e:
        print("Hata oluştu:", str(e))

def kitap_listele():
    try:
        with open("kitaplar.txt", "r") as dosya:
            kitaplar = dosya.readlines()
            if not kitaplar:
                print("Henüz kaydedilmiş kitap yok.")
            else:
                listbox.delete(0, END)  # Clear existing listbox items
                for kitap in kitaplar:
                    listbox.insert(END, kitap.strip())
    except Exception as e:
        print("Hata oluştu:", str(e))

def kitap_listesini_temizle():
    try:
        with open("kitaplar.txt", "w") as dosya:
            dosya.write("")
        print("Kitap listesi başarıyla temizlendi.")
        listbox.delete(0, END)
    except Exception as e:
        print("Hata oluştu:", str(e))

def main():
   


    global kitap_adi_giris
    kitap_adi_giris = Entry(root, width=30, bg='white', fg='black', font=('Arial', 12))
    kitap_adi_giris.place(x=550, y=350)

    Button(root, width=39, pady=7, text='Kitap Kaydet', bg='black', fg='white', border=0, command=kitap_kaydet).place(x=550, y=380)
    Button(root, width=39, pady=7, text='Kaydedilen kitapları listele', bg='black', fg='white', border=0, command=kitap_listele).place(x=550, y=410)
    Button(root, width=39, pady=7, text='Çıkış', bg='black', fg='white', border=0, command=root.quit).place(x=550, y=440)
    Button(root, width=39, pady=7, text='Kitap listesini temizle', bg='black', fg='white', border=0, command=kitap_listesini_temizle).place(x=5, y=340)
    Label(root, width=39, pady=7, text='KİTAP LİSTESİ', bg='black', fg='white', border=0).place(x=95, y=20)


    global listbox
    listbox = Listbox(root, bg='white', fg='black', font=('Arial', 12), width=40, height=15)
    listbox.place(x=50, y=50)



if __name__ == "__main__":
    main()
    root.mainloop()


Uygulama görseli :
image.png


Teşekkürler.
Bu konu nedense yeni karşıma çıktı... Güzel bir çalışma olmuş eline sağlık. Bizim okulda böyle bir uygulama isteniyordu, yaptırılmasaydı senin izninle bunu atabilirdim. Öğretmenler öğrencilerin okuduğu kitapları kaydedecekti.
 

Agent-47

Katılımcı Üye
23 Mar 2023
415
265
HACKERİSTAN
Exe şeklini buradan indirebilirsiniz eğer çalışmaz ise size kaynak kodlarını atacağım, özel mesaj yoluyla iletişime geçebilirsiniz.

Exe dosyası: İndir kitap rar

Virus Total: VirusTotal
Screenshot-158.png

Traceback (most recent call last):
File "kitap.py", line 12, in <module>
File "tkinter\__init__.py", line 4129, in __init__
File "tkinter\__init__.py", line 4074, in __init__
_tkinter.TclError: couldn't open "D:\codes/okuduğunuz kitap/kitap.png": no such file or directory
böyle bi hata alıyorum
aynen bende o hatayı alıyorum galiba üstte attığımla aynı senin hatan
 

01Kevin01

Katılımcı Üye
4 May 2022
428
5
224
Merhaba ben DisserF. Python ile okuduğunuz kitapları kayıt edebileceğiniz bir uygulama yazdım. Umarım işinize yarar.

Python:
from tkinter import *



root = Tk()
root.title('Book Recorder')
root.geometry('925x500+300+200')
root.configure(bg="black")
root.resizable(False, False)


img = PhotoImage(file='D:\codes/okuduğunuz kitap/kitap.png')
Label(root, image=img, bg='black').place(x=550, y=50)

def kitap_kaydet():
    try:
        with open("kitaplar.txt", "a") as dosya:
            kitap_adi = kitap_adi_giris.get()
            dosya.write(kitap_adi + "\n")
        print("Kitap başarıyla kaydedildi.")
    except Exception as e:
        print("Hata oluştu:", str(e))

def kitap_listele():
    try:
        with open("kitaplar.txt", "r") as dosya:
            kitaplar = dosya.readlines()
            if not kitaplar:
                print("Henüz kaydedilmiş kitap yok.")
            else:
                listbox.delete(0, END)  # Clear existing listbox items
                for kitap in kitaplar:
                    listbox.insert(END, kitap.strip())
    except Exception as e:
        print("Hata oluştu:", str(e))

def kitap_listesini_temizle():
    try:
        with open("kitaplar.txt", "w") as dosya:
            dosya.write("")
        print("Kitap listesi başarıyla temizlendi.")
        listbox.delete(0, END)
    except Exception as e:
        print("Hata oluştu:", str(e))

def main():
   


    global kitap_adi_giris
    kitap_adi_giris = Entry(root, width=30, bg='white', fg='black', font=('Arial', 12))
    kitap_adi_giris.place(x=550, y=350)

    Button(root, width=39, pady=7, text='Kitap Kaydet', bg='black', fg='white', border=0, command=kitap_kaydet).place(x=550, y=380)
    Button(root, width=39, pady=7, text='Kaydedilen kitapları listele', bg='black', fg='white', border=0, command=kitap_listele).place(x=550, y=410)
    Button(root, width=39, pady=7, text='Çıkış', bg='black', fg='white', border=0, command=root.quit).place(x=550, y=440)
    Button(root, width=39, pady=7, text='Kitap listesini temizle', bg='black', fg='white', border=0, command=kitap_listesini_temizle).place(x=5, y=340)
    Label(root, width=39, pady=7, text='KİTAP LİSTESİ', bg='black', fg='white', border=0).place(x=95, y=20)


    global listbox
    listbox = Listbox(root, bg='white', fg='black', font=('Arial', 12), width=40, height=15)
    listbox.place(x=50, y=50)



if __name__ == "__main__":
    main()
    root.mainloop()


Uygulama görseli :
image.png


Teşekkürler.
Güzel bir çalışma olmuş fakat böyle çalışmalarını benim gibi githuba yüklersen daha gelişirsin...

Ayrıca hatanın sebebi png
koşul ve scrpit eklerseniz düzelir.Sınıfları daha düzenli olursa güzel olur.JSON veya SQLite gibi veri tabanı olabilir.İsteyen kitap kapağı ekleyebilir hatta eklenen kitap için ayrı bir tk pencerisi olabilir.Detaylar v.s eklenen kitabın tk pencerisnde yazar.

Hatayı düzeltmek için;
Python:
import os

file_path = "dosya yolu"
if not os.path.exists(file_path):
print("Hata: Dosya bulunamadı")

Bence çözümü olabilir.filedialog ile kitap kapağı v.s kullanılabilir.Kodu geliştirebilirim fakat sizin yapmanız daha iyi olur.
Bence ttk modelini de kullanabilirsin.Daha modern olur...
sqlite3 ile sql düzenlemesi,cx_Freeze ile proje detayları,matplotlib temel bir çizim kütüphanesi iken, seaborn daha yüksek seviyeli ve estetik olarak hoş grafiğe dönüşüm sağlayan bir ara katmandır...

İyi Günler
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.