Geliştirilebilir ToDo App Projesi

'Medusa

Katılımcı Üye
18 Ocak 2021
839
370
JAPAN
ToDo App Projesi
Projede elimden geldiğince kolaylaştırdım ayrıca verilerinizi SQL ile kaydediyor.
Tkinter ile görsel bir arayüzde ekledim. Oluşturma tarihi ve Açıklama sisteminide sahip.

GitHub

Kodlar :
Python:
import sqlite3
import datetime
import tkinter as tk
from tkinter import messagebox

class menemen:
    def __init__(self, root):
        self.root = root
        self.root.title("Uygulamaya Hoşgelmişsen")

        self.conn = sqlite3.connect('deneme1.db')
        self.cursor = self.conn.cursor()
        self.cursor.execute('''
            CREATE TABLE IF NOT EXISTS tasks (
                id INTEGER PRIMARY KEY,
                task TEXT,
                description TEXT,
                done BOOLEAN,
                created_at TEXT
            )
        ''')
        self.conn.commit()

        self.task_entry = tk.Entry(root, width=30)
        self.task_entry.pack(pady=10)

        self.description_entry = tk.Entry(root, width=30)
        self.description_entry.pack(pady=5)

        self.add_button = tk.Button(root, text="Ekle", command=self.add_task)
        self.add_button.pack()

        self.task_listbox = tk.Listbox(root, width=40)
        self.task_listbox.pack(pady=10)

        self.list_button = tk.Button(root, text="Listele", command=self.list_tasks)
        self.list_button.pack()

        self.done_button = tk.Button(root, text="Tamamlandı olarak işaretle", command=self.mark_done)
        self.done_button.pack()

        self.delete_button = tk.Button(root, text="Görevi Sil", command=self.delete_task)
        self.delete_button.pack()

        self.quit_button = tk.Button(root, text="Çıkış", command=root.destroy)
        self.quit_button.pack()
 # bu üst menemen clasın içerdikleri : Butonlar ne yapacakları , görev yazma açıklama yazma kutusu.

    def add_task(self):
        task = self.task_entry.get()
        description = self.description_entry.get()
        if task:
            current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            self.cursor.execute('INSERT INTO tasks (task, description, done, created_at) VALUES (?, ?, ?, ?)',
                                (task, description, False, current_time))
            self.conn.commit()
            self.task_entry.delete(0, tk.END)
            self.description_entry.delete(0, tk.END)
            messagebox.showinfo("Başarı", "Hadi başlayalım görevin eklendi sıra sende")
        else:
            messagebox.showwarning("Uyarı", "Görevi yazmayı unuttun.")

    def list_tasks(self):
        self.task_listbox.delete(0, tk.END)
        self.cursor.execute('SELECT id, task, description, done, created_at FROM tasks WHERE done = ?', (False,))
        tasks = self.cursor.fetchall()
        for task in tasks:
            self.task_listbox.insert(tk.END, f"{task[0]}. [ ] {task[1]} - Açıklama: {task[2]} - Oluşturulma Tarihi: {task[4]}")

        self.cursor.execute('SELECT id, task, description, done, created_at FROM tasks WHERE done = ?', (True,))
        completed_tasks = self.cursor.fetchall()
        for task in completed_tasks:
            self.task_listbox.insert(tk.END, f"{task[0]}. [✔] {task[1]} - Açıklama: {task[2]} - Oluşturulma Tarihi: {task[4]}")

    def mark_done(self):
        selected_task = self.task_listbox.get(tk.ACTIVE)
        if selected_task:
            task_id = int(selected_task.split(".")[0])
            self.cursor.execute('UPDATE tasks SET done = ? WHERE id = ?', (True, task_id))
            self.conn.commit()
            self.list_tasks()
            messagebox.showinfo("Başarı", "Aferin görevini tamamladın")
        else:
            messagebox.showwarning("Uyarı", "Tamamlamak istediğiğinizi maus ile seçin")

    def delete_task(self):
        selected_task = self.task_listbox.get(tk.ACTIVE)
        if selected_task:
            task_id = int(selected_task.split(".")[0])
            self.cursor.execute('DELETE FROM tasks WHERE id = ?', (task_id,))
            self.conn.commit()
            self.list_tasks()
            messagebox.showinfo("Başarı", "Sildim Giti")
        else:
            messagebox.showwarning("Uyarı", "Görev seçmedin.")
# burasıda butonlara bsınca ne yapacakları sil = sil basınca hem listden siliyor hemde db de 0 olarak günelliyo gerisi aynı mantık.
if __name__ == "__main__":
    root = tk.Tk()
    app = menemen(root)
    root.mainloop()
 

rootibo

Kıdemli Üye
13 Mar 2023
2,169
1,460
ToDo App Projesi
Projede elimden geldiğince kolaylaştırdım ayrıca verilerinizi SQL ile kaydediyor.
Tkinter ile görsel bir arayüzde ekledim. Oluşturma tarihi ve Açıklama sisteminide sahip.

GitHub

Kodlar :
Python:
import sqlite3
import datetime
import tkinter as tk
from tkinter import messagebox

class menemen:
    def __init__(self, root):
        self.root = root
        self.root.title("Uygulamaya Hoşgelmişsen")

        self.conn = sqlite3.connect('deneme1.db')
        self.cursor = self.conn.cursor()
        self.cursor.execute('''
            CREATE TABLE IF NOT EXISTS tasks (
                id INTEGER PRIMARY KEY,
                task TEXT,
                description TEXT,
                done BOOLEAN,
                created_at TEXT
            )
        ''')
        self.conn.commit()

        self.task_entry = tk.Entry(root, width=30)
        self.task_entry.pack(pady=10)

        self.description_entry = tk.Entry(root, width=30)
        self.description_entry.pack(pady=5)

        self.add_button = tk.Button(root, text="Ekle", command=self.add_task)
        self.add_button.pack()

        self.task_listbox = tk.Listbox(root, width=40)
        self.task_listbox.pack(pady=10)

        self.list_button = tk.Button(root, text="Listele", command=self.list_tasks)
        self.list_button.pack()

        self.done_button = tk.Button(root, text="Tamamlandı olarak işaretle", command=self.mark_done)
        self.done_button.pack()

        self.delete_button = tk.Button(root, text="Görevi Sil", command=self.delete_task)
        self.delete_button.pack()

        self.quit_button = tk.Button(root, text="Çıkış", command=root.destroy)
        self.quit_button.pack()
 # bu üst menemen clasın içerdikleri : Butonlar ne yapacakları , görev yazma açıklama yazma kutusu.

    def add_task(self):
        task = self.task_entry.get()
        description = self.description_entry.get()
        if task:
            current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            self.cursor.execute('INSERT INTO tasks (task, description, done, created_at) VALUES (?, ?, ?, ?)',
                                (task, description, False, current_time))
            self.conn.commit()
            self.task_entry.delete(0, tk.END)
            self.description_entry.delete(0, tk.END)
            messagebox.showinfo("Başarı", "Hadi başlayalım görevin eklendi sıra sende")
        else:
            messagebox.showwarning("Uyarı", "Görevi yazmayı unuttun.")

    def list_tasks(self):
        self.task_listbox.delete(0, tk.END)
        self.cursor.execute('SELECT id, task, description, done, created_at FROM tasks WHERE done = ?', (False,))
        tasks = self.cursor.fetchall()
        for task in tasks:
            self.task_listbox.insert(tk.END, f"{task[0]}. [ ] {task[1]} - Açıklama: {task[2]} - Oluşturulma Tarihi: {task[4]}")

        self.cursor.execute('SELECT id, task, description, done, created_at FROM tasks WHERE done = ?', (True,))
        completed_tasks = self.cursor.fetchall()
        for task in completed_tasks:
            self.task_listbox.insert(tk.END, f"{task[0]}. [✔] {task[1]} - Açıklama: {task[2]} - Oluşturulma Tarihi: {task[4]}")

    def mark_done(self):
        selected_task = self.task_listbox.get(tk.ACTIVE)
        if selected_task:
            task_id = int(selected_task.split(".")[0])
            self.cursor.execute('UPDATE tasks SET done = ? WHERE id = ?', (True, task_id))
            self.conn.commit()
            self.list_tasks()
            messagebox.showinfo("Başarı", "Aferin görevini tamamladın")
        else:
            messagebox.showwarning("Uyarı", "Tamamlamak istediğiğinizi maus ile seçin")

    def delete_task(self):
        selected_task = self.task_listbox.get(tk.ACTIVE)
        if selected_task:
            task_id = int(selected_task.split(".")[0])
            self.cursor.execute('DELETE FROM tasks WHERE id = ?', (task_id,))
            self.conn.commit()
            self.list_tasks()
            messagebox.showinfo("Başarı", "Sildim Giti")
        else:
            messagebox.showwarning("Uyarı", "Görev seçmedin.")
# burasıda butonlara bsınca ne yapacakları sil = sil basınca hem listden siliyor hemde db de 0 olarak günelliyo gerisi aynı mantık.
if __name__ == "__main__":
    root = tk.Tk()
    app = menemen(root)
    root.mainloop()
eline saglik guzel hos olmus ama arka plan biraz garip
 

TurkGokay

Uzman üye
4 Ara 2022
1,022
544
Kemalizm
ToDo App Projesi
Projede elimden geldiğince kolaylaştırdım ayrıca verilerinizi SQL ile kaydediyor.
Tkinter ile görsel bir arayüzde ekledim. Oluşturma tarihi ve Açıklama sisteminide sahip.

GitHub

Kodlar :
Python:
import sqlite3
import datetime
import tkinter as tk
from tkinter import messagebox

class menemen:
    def __init__(self, root):
        self.root = root
        self.root.title("Uygulamaya Hoşgelmişsen")

        self.conn = sqlite3.connect('deneme1.db')
        self.cursor = self.conn.cursor()
        self.cursor.execute('''
            CREATE TABLE IF NOT EXISTS tasks (
                id INTEGER PRIMARY KEY,
                task TEXT,
                description TEXT,
                done BOOLEAN,
                created_at TEXT
            )
        ''')
        self.conn.commit()

        self.task_entry = tk.Entry(root, width=30)
        self.task_entry.pack(pady=10)

        self.description_entry = tk.Entry(root, width=30)
        self.description_entry.pack(pady=5)

        self.add_button = tk.Button(root, text="Ekle", command=self.add_task)
        self.add_button.pack()

        self.task_listbox = tk.Listbox(root, width=40)
        self.task_listbox.pack(pady=10)

        self.list_button = tk.Button(root, text="Listele", command=self.list_tasks)
        self.list_button.pack()

        self.done_button = tk.Button(root, text="Tamamlandı olarak işaretle", command=self.mark_done)
        self.done_button.pack()

        self.delete_button = tk.Button(root, text="Görevi Sil", command=self.delete_task)
        self.delete_button.pack()

        self.quit_button = tk.Button(root, text="Çıkış", command=root.destroy)
        self.quit_button.pack()
 # bu üst menemen clasın içerdikleri : Butonlar ne yapacakları , görev yazma açıklama yazma kutusu.

    def add_task(self):
        task = self.task_entry.get()
        description = self.description_entry.get()
        if task:
            current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            self.cursor.execute('INSERT INTO tasks (task, description, done, created_at) VALUES (?, ?, ?, ?)',
                                (task, description, False, current_time))
            self.conn.commit()
            self.task_entry.delete(0, tk.END)
            self.description_entry.delete(0, tk.END)
            messagebox.showinfo("Başarı", "Hadi başlayalım görevin eklendi sıra sende")
        else:
            messagebox.showwarning("Uyarı", "Görevi yazmayı unuttun.")

    def list_tasks(self):
        self.task_listbox.delete(0, tk.END)
        self.cursor.execute('SELECT id, task, description, done, created_at FROM tasks WHERE done = ?', (False,))
        tasks = self.cursor.fetchall()
        for task in tasks:
            self.task_listbox.insert(tk.END, f"{task[0]}. [ ] {task[1]} - Açıklama: {task[2]} - Oluşturulma Tarihi: {task[4]}")

        self.cursor.execute('SELECT id, task, description, done, created_at FROM tasks WHERE done = ?', (True,))
        completed_tasks = self.cursor.fetchall()
        for task in completed_tasks:
            self.task_listbox.insert(tk.END, f"{task[0]}. [✔] {task[1]} - Açıklama: {task[2]} - Oluşturulma Tarihi: {task[4]}")

    def mark_done(self):
        selected_task = self.task_listbox.get(tk.ACTIVE)
        if selected_task:
            task_id = int(selected_task.split(".")[0])
            self.cursor.execute('UPDATE tasks SET done = ? WHERE id = ?', (True, task_id))
            self.conn.commit()
            self.list_tasks()
            messagebox.showinfo("Başarı", "Aferin görevini tamamladın")
        else:
            messagebox.showwarning("Uyarı", "Tamamlamak istediğiğinizi maus ile seçin")

    def delete_task(self):
        selected_task = self.task_listbox.get(tk.ACTIVE)
        if selected_task:
            task_id = int(selected_task.split(".")[0])
            self.cursor.execute('DELETE FROM tasks WHERE id = ?', (task_id,))
            self.conn.commit()
            self.list_tasks()
            messagebox.showinfo("Başarı", "Sildim Giti")
        else:
            messagebox.showwarning("Uyarı", "Görev seçmedin.")
# burasıda butonlara bsınca ne yapacakları sil = sil basınca hem listden siliyor hemde db de 0 olarak günelliyo gerisi aynı mantık.
if __name__ == "__main__":
    root = tk.Tk()
    app = menemen(root)
    root.mainloop()
Ellerine sağlık, çok güzel olmuş. Üzerine eklemeler yapabilir miyim?
 

CyrusMan

Katılımcı Üye
19 Tem 2021
291
112
Düşsüzler Apartmanı
ToDo App Projesi
Projede elimden geldiğince kolaylaştırdım ayrıca verilerinizi SQL ile kaydediyor.
Tkinter ile görsel bir arayüzde ekledim. Oluşturma tarihi ve Açıklama sisteminide sahip.

GitHub

Kodlar :
Python:
import sqlite3
import datetime
import tkinter as tk
from tkinter import messagebox

class menemen:
    def __init__(self, root):
        self.root = root
        self.root.title("Uygulamaya Hoşgelmişsen")

        self.conn = sqlite3.connect('deneme1.db')
        self.cursor = self.conn.cursor()
        self.cursor.execute('''
            CREATE TABLE IF NOT EXISTS tasks (
                id INTEGER PRIMARY KEY,
                task TEXT,
                description TEXT,
                done BOOLEAN,
                created_at TEXT
            )
        ''')
        self.conn.commit()

        self.task_entry = tk.Entry(root, width=30)
        self.task_entry.pack(pady=10)

        self.description_entry = tk.Entry(root, width=30)
        self.description_entry.pack(pady=5)

        self.add_button = tk.Button(root, text="Ekle", command=self.add_task)
        self.add_button.pack()

        self.task_listbox = tk.Listbox(root, width=40)
        self.task_listbox.pack(pady=10)

        self.list_button = tk.Button(root, text="Listele", command=self.list_tasks)
        self.list_button.pack()

        self.done_button = tk.Button(root, text="Tamamlandı olarak işaretle", command=self.mark_done)
        self.done_button.pack()

        self.delete_button = tk.Button(root, text="Görevi Sil", command=self.delete_task)
        self.delete_button.pack()

        self.quit_button = tk.Button(root, text="Çıkış", command=root.destroy)
        self.quit_button.pack()
 # bu üst menemen clasın içerdikleri : Butonlar ne yapacakları , görev yazma açıklama yazma kutusu.

    def add_task(self):
        task = self.task_entry.get()
        description = self.description_entry.get()
        if task:
            current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            self.cursor.execute('INSERT INTO tasks (task, description, done, created_at) VALUES (?, ?, ?, ?)',
                                (task, description, False, current_time))
            self.conn.commit()
            self.task_entry.delete(0, tk.END)
            self.description_entry.delete(0, tk.END)
            messagebox.showinfo("Başarı", "Hadi başlayalım görevin eklendi sıra sende")
        else:
            messagebox.showwarning("Uyarı", "Görevi yazmayı unuttun.")

    def list_tasks(self):
        self.task_listbox.delete(0, tk.END)
        self.cursor.execute('SELECT id, task, description, done, created_at FROM tasks WHERE done = ?', (False,))
        tasks = self.cursor.fetchall()
        for task in tasks:
            self.task_listbox.insert(tk.END, f"{task[0]}. [ ] {task[1]} - Açıklama: {task[2]} - Oluşturulma Tarihi: {task[4]}")

        self.cursor.execute('SELECT id, task, description, done, created_at FROM tasks WHERE done = ?', (True,))
        completed_tasks = self.cursor.fetchall()
        for task in completed_tasks:
            self.task_listbox.insert(tk.END, f"{task[0]}. [✔] {task[1]} - Açıklama: {task[2]} - Oluşturulma Tarihi: {task[4]}")

    def mark_done(self):
        selected_task = self.task_listbox.get(tk.ACTIVE)
        if selected_task:
            task_id = int(selected_task.split(".")[0])
            self.cursor.execute('UPDATE tasks SET done = ? WHERE id = ?', (True, task_id))
            self.conn.commit()
            self.list_tasks()
            messagebox.showinfo("Başarı", "Aferin görevini tamamladın")
        else:
            messagebox.showwarning("Uyarı", "Tamamlamak istediğiğinizi maus ile seçin")

    def delete_task(self):
        selected_task = self.task_listbox.get(tk.ACTIVE)
        if selected_task:
            task_id = int(selected_task.split(".")[0])
            self.cursor.execute('DELETE FROM tasks WHERE id = ?', (task_id,))
            self.conn.commit()
            self.list_tasks()
            messagebox.showinfo("Başarı", "Sildim Giti")
        else:
            messagebox.showwarning("Uyarı", "Görev seçmedin.")
# burasıda butonlara bsınca ne yapacakları sil = sil basınca hem listden siliyor hemde db de 0 olarak günelliyo gerisi aynı mantık.
if __name__ == "__main__":
    root = tk.Tk()
    app = menemen(root)
    root.mainloop()
"Hoşgelmişsen" kısmı güzel bir detay olmuş. Eline sağlık
 
Ü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.