{"id":37575,"date":"2026-01-09T15:00:43","date_gmt":"2026-01-09T12:00:43","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/todomate-%f0%9f%93%9d-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/"},"modified":"2026-01-09T15:00:43","modified_gmt":"2026-01-09T12:00:43","slug":"todomate-%f0%9f%93%9d-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/todomate-%f0%9f%93%9d-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/","title":{"rendered":"ToDoMate \ud83d\udcdd: Python ile Modern Bir Tkinter Yap\u0131lacaklar Listesi Uygulamas\u0131 Geli\u015ftirme"},"content":{"rendered":"<h2>ToDoMate \ud83d\udcdd: Python ile Modern Bir Tkinter Yap\u0131lacaklar Listesi Uygulamas\u0131 Geli\u015ftirme<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zl\u0131 temposunda, g\u00f6revlerimizi d\u00fczenli tutmak ve \u00fcretkenli\u011fimizi art\u0131rmak b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Bu ihtiyaca y\u00f6nelik olarak geli\u015ftirilen ToDoMate, Python&#8217;\u0131n yerle\u015fik GUI k\u00fct\u00fcphanesi Tkinter kullanarak modern ve kullan\u0131c\u0131 dostu bir yap\u0131lacaklar listesi uygulamas\u0131 sunar. Bu makalede, ToDoMate&#8217;i s\u0131f\u0131rdan in\u015fa etme s\u00fcrecini ad\u0131m ad\u0131m inceleyecek, Tkinter&#8217;\u0131n g\u00fcc\u00fcn\u00fc ve esnekli\u011fini ke\u015ffedecek ve kendi masa\u00fcst\u00fc uygulaman\u0131z\u0131 nas\u0131l geli\u015ftirebilece\u011finizi \u00f6\u011freneceksiniz.<\/p>\n<h3>Giri\u015f ve Tkinter&#8217;a Genel Bak\u0131\u015f<\/h3>\n<p>Python, veri biliminden web geli\u015ftirmeye kadar bir\u00e7ok alanda kullan\u0131lan \u00e7ok y\u00f6nl\u00fc bir programlama dilidir. Ancak, masa\u00fcst\u00fc uygulamalar\u0131 geli\u015ftirme yetene\u011fi de en az di\u011fer alanlar kadar \u00f6nemlidir. Tkinter, Python&#8217;\u0131n standart GUI (Grafik Kullan\u0131c\u0131 Aray\u00fcz\u00fc) k\u00fct\u00fcphanesidir ve basit, h\u0131zl\u0131 ve etkili masa\u00fcst\u00fc uygulamalar\u0131 olu\u015fturmak i\u00e7in m\u00fckemmel bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. ToDoMate projesi, Tkinter&#8217;\u0131n temel \u00f6zelliklerini kullanarak, kullan\u0131c\u0131lar\u0131n g\u00f6revlerini kolayca eklemesini, tamamlamas\u0131n\u0131 ve silmesini sa\u011flayan pratik bir ara\u00e7 olmay\u0131 hedeflemektedir.<\/p>\n<h4>Tkinter Neden Tercih Edilmeli?<\/h4>\n<p>Tkinter, Python ile GUI geli\u015ftirmek isteyenler i\u00e7in bir\u00e7ok avantaj sunar:<\/p>\n<ul>\n<li><strong>Kolay \u00d6\u011frenilebilir:<\/strong> Basit ve anla\u015f\u0131l\u0131r bir API&#8217;ye sahiptir, yeni ba\u015flayanlar i\u00e7in idealdir.<\/li>\n<li><strong>Yerle\u015fik:<\/strong> Python kurulumuyla birlikte gelir, ek bir kurulum veya ba\u011f\u0131ml\u0131l\u0131k gerektirmez.<\/li>\n<li><strong>\u00c7apraz Platform:<\/strong> Windows, macOS ve Linux gibi farkl\u0131 i\u015fletim sistemlerinde sorunsuz \u00e7al\u0131\u015f\u0131r.<\/li>\n<li><strong>Esnek:<\/strong> Temel bile\u015fenlerden karma\u015f\u0131k d\u00fczenlere kadar geni\u015f bir yelpazede UI elemanlar\u0131 sunar.<\/li>\n<\/ul>\n<p>Bu \u00f6zellikler, ToDoMate gibi basit ama i\u015flevsel bir uygulaman\u0131n h\u0131zl\u0131ca geli\u015ftirilmesi i\u00e7in Tkinter&#8217;\u0131 cazip bir se\u00e7enek haline getirir.<\/p>\n<h4>ToDoMate&#8217;in Amac\u0131 ve \u00d6zellikleri<\/h4>\n<p>ToDoMate&#8217;in temel amac\u0131, kullan\u0131c\u0131lar\u0131n g\u00fcnl\u00fck g\u00f6revlerini kolayca y\u00f6netmelerini sa\u011flamakt\u0131r. Uygulaman\u0131n sunaca\u011f\u0131 ba\u015fl\u0131ca \u00f6zellikler \u015funlard\u0131r:<\/p>\n<ul>\n<li>Yeni g\u00f6rev ekleme.<\/li>\n<li>Mevcut g\u00f6revleri tamamlama veya silme.<\/li>\n<li>G\u00f6revlerin kal\u0131c\u0131 olarak kaydedilmesi ve y\u00fcklenmesi.<\/li>\n<li>Basit ve sezgisel bir kullan\u0131c\u0131 aray\u00fcz\u00fc.<\/li>\n<\/ul>\n<h4>Geli\u015ftirme Ortam\u0131 Kurulumu<\/h4>\n<p>Python ve Tkinter genellikle birlikte gelir. Herhangi bir ek kurulum yapman\u0131za gerek yoktur. Bir metin d\u00fczenleyici (VS Code, Sublime Text) veya bir IDE (PyCharm) kullanarak geli\u015ftirmeye ba\u015flayabilirsiniz.<\/p>\n<h3>ToDoMate Projesi: Temel Gereksinimler ve Tasar\u0131m<\/h3>\n<p>Her yaz\u0131l\u0131m projesinde oldu\u011fu gibi, ToDoMate i\u00e7in de bir planlama ve tasar\u0131m a\u015famas\u0131 \u00f6nemlidir. Uygulaman\u0131n ne yapaca\u011f\u0131n\u0131 ve nas\u0131l g\u00f6r\u00fcnece\u011fini belirlemek, geli\u015ftirme s\u00fcrecini daha d\u00fczenli hale getirir.<\/p>\n<h4>Uygulama Mimarisi ve Mod\u00fcler Yakla\u015f\u0131m<\/h4>\n<p>ToDoMate&#8217;i tek bir b\u00fcy\u00fck dosya yerine, farkl\u0131 sorumluluklar\u0131 olan mod\u00fcllere ay\u0131rarak daha s\u00fcrd\u00fcr\u00fclebilir bir yap\u0131 olu\u015fturabiliriz. \u00d6rne\u011fin:<\/p>\n<ul>\n<li><code>main.py<\/code>: Uygulaman\u0131n ana penceresini ve ana d\u00f6ng\u00fcs\u00fcn\u00fc y\u00f6netir.<\/li>\n<li><code>task_manager.py<\/code>: G\u00f6rev ekleme, silme, g\u00fcncelleme gibi i\u015f mant\u0131\u011f\u0131n\u0131 i\u00e7erir.<\/li>\n<li><code>data_manager.py<\/code>: G\u00f6revlerin dosya sistemine kaydedilmesi ve y\u00fcklenmesinden sorumludur.<\/li>\n<li><code>ui_elements.py<\/code>: \u00d6zel Tkinter bile\u015fenlerini veya stil ayarlar\u0131n\u0131 bar\u0131nd\u0131rabilir.<\/li>\n<\/ul>\n<p>Bu mod\u00fcler yap\u0131, kodun okunabilirli\u011fini art\u0131r\u0131r ve bak\u0131m\u0131 kolayla\u015ft\u0131r\u0131r.<\/p>\n<h4>Kullan\u0131c\u0131 Aray\u00fcz\u00fc Tasar\u0131m Prensipleri<\/h4>\n<p>ToDoMate&#8217;in kullan\u0131c\u0131 aray\u00fcz\u00fc, basitlik ve i\u015flevsellik \u00fczerine kurulmal\u0131d\u0131r. Temel prensipler:<\/p>\n<ul>\n<li><strong>Netlik:<\/strong> Her bile\u015fenin ne i\u015fe yarad\u0131\u011f\u0131 a\u00e7\u0131k\u00e7a anla\u015f\u0131lmal\u0131.<\/li>\n<li><strong>Tutarl\u0131l\u0131k:<\/strong> Renkler, yaz\u0131 tipleri ve bile\u015fen d\u00fczenleri tutarl\u0131 olmal\u0131.<\/li>\n<li><strong>Eri\u015filebilirlik:<\/strong> Kullan\u0131c\u0131lar\u0131n g\u00f6revleri kolayca g\u00f6r\u00fcp etkile\u015fimde bulunabilmesi.<\/li>\n<\/ul>\n<p>Uygulama, bir g\u00f6rev giri\u015f alan\u0131, bir ekle butonu, g\u00f6revleri listeleyen bir alan ve her g\u00f6rev i\u00e7in tamamlama\/silme se\u00e7enekleri i\u00e7erecektir.<\/p>\n<h4>Gerekli Python K\u00fct\u00fcphaneleri<\/h4>\n<p>ToDoMate i\u00e7in temel olarak sadece <code>tkinter<\/code> k\u00fct\u00fcphanesine ihtiyac\u0131m\u0131z olacak. Veri kal\u0131c\u0131l\u0131\u011f\u0131 i\u00e7in ise Python&#8217;\u0131n yerle\u015fik <code>json<\/code> mod\u00fcl\u00fcn\u00fc kullanabiliriz.<\/p>\n<pre><code class=\"language-python\">\nimport tkinter as tk\nfrom tkinter import messagebox\nimport json\nimport os # Dosya i\u015flemleri i\u00e7in\n<\/pre>\n<p><\/code><\/p>\n<h3>Uygulama Yap\u0131s\u0131n\u0131n Olu\u015fturulmas\u0131: Temel Pencere ve Bile\u015fenler<\/h3>\n<p>Uygulaman\u0131n iskeletini olu\u015fturmak, ana pencereyi tan\u0131mlamak ve temel kullan\u0131c\u0131 aray\u00fcz\u00fc bile\u015fenlerini yerle\u015ftirmekle ba\u015flar\u0131z.<\/p>\n<h4>Ana Pencere ve \u00c7er\u00e7eveler<\/h4>\n<p>Her Tkinter uygulamas\u0131 bir ana pencere ile ba\u015flar. Bu pencere, t\u00fcm di\u011fer widget'lar\u0131 bar\u0131nd\u0131r\u0131r. \u00c7er\u00e7eveler (<code>Frame<\/code>), widget'lar\u0131 gruplamak ve d\u00fczenlemek i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-python\">\nclass ToDoMateApp:\n    def __init__(self, master):\n        self.master = master\n        master.title(\"ToDoMate \ud83d\udcdd\")\n        master.geometry(\"400x550\") # Pencere boyutu\n        master.resizable(False, False) # Yeniden boyutland\u0131rmay\u0131 kapat\n\n        # Ana \u00e7er\u00e7eveler\n        self.input_frame = tk.Frame(master, padx=10, pady=10)\n        self.input_frame.pack(pady=5)\n\n        self.list_frame = tk.Frame(master, padx=10, pady=10)\n        self.list_frame.pack(expand=True, fill=\"both\")\n\n        self.setup_ui()\n        self.load_tasks()\n<\/pre>\n<p><\/code><\/p>\n<h4>G\u00f6rev Giri\u015f Alan\u0131 ve Butonlar<\/h4>\n<p>Kullan\u0131c\u0131n\u0131n yeni g\u00f6revleri yazaca\u011f\u0131 bir giri\u015f kutusu (<code>Entry<\/code>) ve bu g\u00f6revi listeye ekleyecek bir buton (<code>Button<\/code>) ekleyece\u011fiz.<\/p>\n<pre><code class=\"language-python\">\n    def setup_ui(self):\n        # G\u00f6rev Giri\u015f Alan\u0131\n        self.task_entry = tk.Entry(self.input_frame, width=30, font=(\"Arial\", 12))\n        self.task_entry.grid(row=0, column=0, padx=5, pady=5)\n        self.task_entry.bind(\"<Return>\", lambda event: self.add_task()) # Enter ile ekleme\n\n        # Ekle Butonu\n        self.add_button = tk.Button(self.input_frame, text=\"Ekle\", command=self.add_task,\n                                    bg=\"#4CAF50\", fg=\"white\", font=(\"Arial\", 10, \"bold\"))\n        self.add_button.grid(row=0, column=1, padx=5, pady=5)\n<\/pre>\n<p><\/code><\/p>\n<h4>G\u00f6rev Listesi G\u00f6r\u00fcnt\u00fcleme Alan\u0131<\/h4>\n<p>G\u00f6revleri g\u00f6stermek i\u00e7in bir <code>Listbox<\/code> veya daha esnek bir yap\u0131 olan <code>Canvas<\/code> i\u00e7inde <code>Frame<\/code> kullanarak \u00f6zel bir liste olu\u015fturabiliriz. Bu \u00f6rnekte daha modern bir yakla\u015f\u0131m i\u00e7in <code>Canvas<\/code> ve <code>Frame<\/code> kombinasyonunu tercih edelim.<\/p>\n<pre><code class=\"language-python\">\n        # G\u00f6rev Listesi (Canvas i\u00e7inde Frame)\n        self.canvas = tk.Canvas(self.list_frame, bg=\"#f0f0f0\")\n        self.scrollbar = tk.Scrollbar(self.list_frame, orient=\"vertical\", command=self.canvas.yview)\n        self.scrollable_frame = tk.Frame(self.canvas, bg=\"#f0f0f0\")\n\n        self.scrollable_frame.bind(\n            \"<Configure>\",\n            lambda e: self.canvas.configure(\n                scrollregion=self.canvas.bbox(\"all\")\n            )\n        )\n\n        self.canvas.create_window((0, 0), window=self.scrollable_frame, anchor=\"nw\")\n        self.canvas.configure(yscrollcommand=self.scrollbar.set)\n\n        self.canvas.pack(side=\"left\", fill=\"both\", expand=True)\n        self.scrollbar.pack(side=\"right\", fill=\"y\")\n\n        self.tasks = [] # G\u00f6revleri tutacak liste\n        self.task_widgets = [] # G\u00f6rev widget'lar\u0131n\u0131 tutacak liste\n<\/pre>\n<p><\/code><\/p>\n<h3>G\u00f6rev Y\u00f6netimi Fonksiyonlar\u0131: Ekleme, Silme, G\u00fcncelleme<\/h3>\n<p>Uygulaman\u0131n temel i\u015flevselli\u011fi, g\u00f6revleri y\u00f6netme yetene\u011fidir. Bu b\u00f6l\u00fcmde, g\u00f6rev ekleme, tamamlama ve silme fonksiyonlar\u0131n\u0131 geli\u015ftirece\u011fiz.<\/p>\n<h4>Yeni G\u00f6rev Ekleme Fonksiyonu<\/h4>\n<p>Kullan\u0131c\u0131n\u0131n giri\u015f kutusuna yazd\u0131\u011f\u0131 metni al\u0131p g\u00f6rev listesine ekleyen bir fonksiyon yazal\u0131m.<\/p>\n<pre><code class=\"language-python\">\n    def add_task(self):\n        task_text = self.task_entry.get().strip()\n        if task_text:\n            task = {\"text\": task_text, \"completed\": False}\n            self.tasks.append(task)\n            self.update_task_list()\n            self.task_entry.delete(0, tk.END)\n            self.save_tasks()\n        else:\n            messagebox.showwarning(\"Uyar\u0131\", \"L\u00fctfen bir g\u00f6rev girin!\")\n<\/pre>\n<p><\/code><\/p>\n<h4>G\u00f6revleri Tamamland\u0131 Olarak \u0130\u015faretleme ve Silme<\/h4>\n<p>Her g\u00f6rev i\u00e7in bir onay kutusu ve bir silme butonu ekleyece\u011fiz. Bu bile\u015fenler, g\u00f6revin durumunu de\u011fi\u015ftirecek veya listeden kald\u0131racak fonksiyonlar\u0131 tetikleyecek.<\/p>\n<pre><code class=\"language-python\">\n    def update_task_list(self):\n        # \u00d6nceki widget'lar\u0131 temizle\n        for widget in self.scrollable_frame.winfo_children():\n            widget.destroy()\n        self.task_widgets.clear()\n\n        for i, task in enumerate(self.tasks):\n            task_frame = tk.Frame(self.scrollable_frame, bg=\"#ffffff\", bd=1, relief=\"solid\", padx=5, pady=5)\n            task_frame.pack(fill=\"x\", pady=2)\n\n            # Checkbox\n            var = tk.BooleanVar(value=task[\"completed\"])\n            check_button = tk.Checkbutton(task_frame, variable=var, command=lambda idx=i, v=var: self.toggle_task_completion(idx, v),\n                                          bg=\"#ffffff\", font=(\"Arial\", 10))\n            check_button.pack(side=\"left\")\n\n            # G\u00f6rev Metni\n            task_label = tk.Label(task_frame, text=task[\"text\"], bg=\"#ffffff\", font=(\"Arial\", 10), anchor=\"w\")\n            if task[\"completed\"]:\n                task_label.config(fg=\"gray\", font=(\"Arial\", 10, \"overstrike\"))\n            task_label.pack(side=\"left\", fill=\"x\", expand=True)\n\n            # Sil Butonu\n            delete_button = tk.Button(task_frame, text=\"X\", command=lambda idx=i: self.delete_task(idx),\n                                      bg=\"#FF6B6B\", fg=\"white\", font=(\"Arial\", 8, \"bold\"), width=2)\n            delete_button.pack(side=\"right\")\n\n            self.task_widgets.append({\"frame\": task_frame, \"checkbox_var\": var, \"label\": task_label})\n\n    def toggle_task_completion(self, index, var):\n        self.tasks[index][\"completed\"] = var.get()\n        self.update_task_list()\n        self.save_tasks()\n\n    def delete_task(self, index):\n        if messagebox.askyesno(\"G\u00f6revi Sil\", \"Bu g\u00f6revi silmek istedi\u011finizden emin misiniz?\"):\n            del self.tasks[index]\n            self.update_task_list()\n            self.save_tasks()\n<\/pre>\n<p><\/code><\/p>\n<h4>G\u00f6revleri D\u00fczenleme (Opsiyonel)<\/h4>\n<p>G\u00f6revleri d\u00fczenleme \u00f6zelli\u011fi, uygulaman\u0131n daha da kullan\u0131\u015fl\u0131 olmas\u0131n\u0131 sa\u011flar. Bu, g\u00f6rev metnine t\u0131kland\u0131\u011f\u0131nda bir d\u00fczenleme alan\u0131 a\u00e7arak veya \u00e7ift t\u0131klama olay\u0131yla tetiklenerek yap\u0131labilir. Karma\u015f\u0131kl\u0131\u011f\u0131 art\u0131rmamak ad\u0131na bu makalede temel ekleme\/silme\/tamamlama \u00fczerinde durulacakt\u0131r, ancak geli\u015ftirme i\u00e7in harika bir sonraki ad\u0131md\u0131r.<\/p>\n<h3>Veri Kal\u0131c\u0131l\u0131\u011f\u0131: G\u00f6revleri Kaydetme ve Y\u00fckleme<\/h3>\n<p>Bir yap\u0131lacaklar listesi uygulamas\u0131n\u0131n en kritik \u00f6zelliklerinden biri, kapat\u0131l\u0131p a\u00e7\u0131ld\u0131\u011f\u0131nda g\u00f6revleri hat\u0131rlamas\u0131d\u0131r. Bu, veri kal\u0131c\u0131l\u0131\u011f\u0131 (data persistence) ile sa\u011flan\u0131r.<\/p>\n<h4>JSON ile Veri Saklama Stratejisi<\/h4>\n<p>G\u00f6revlerimizi basit bir JSON dosyas\u0131 olarak kaydetmek, hem kolay okunabilir hem de y\u00f6netilebilir bir \u00e7\u00f6z\u00fcm sunar. Her g\u00f6rev bir s\u00f6zl\u00fck (dictionary) olarak temsil edilecek ve bu s\u00f6zl\u00fckler bir liste i\u00e7inde saklanacakt\u0131r.<\/p>\n<pre><code class=\"language-python\">\nclass ToDoMateApp:\n    # ... (\u00f6nceki kodlar) ...\n\n    def __init__(self, master):\n        # ... (\u00f6nceki kodlar) ...\n        self.data_file = \"tasks.json\" # Veri dosyas\u0131 ad\u0131\n        self.load_tasks() # Uygulama ba\u015flarken g\u00f6revleri y\u00fckle\n<\/pre>\n<p><\/code><\/p>\n<h4>Uygulama Ba\u015flang\u0131c\u0131nda G\u00f6revleri Y\u00fckleme<\/h4>\n<p>Uygulama ba\u015flat\u0131ld\u0131\u011f\u0131nda, daha \u00f6nce kaydedilmi\u015f g\u00f6revleri JSON dosyas\u0131ndan okuyup listeye y\u00fcklemeliyiz.<\/p>\n<pre><code class=\"language-python\">\n    def load_tasks(self):\n        if os.path.exists(self.data_file):\n            try:\n                with open(self.data_file, \"r\", encoding=\"utf-8\") as f:\n                    self.tasks = json.load(f)\n                self.update_task_list()\n            except json.JSONDecodeError:\n                self.tasks = []\n                messagebox.showerror(\"Hata\", \"G\u00f6rev dosyas\u0131 bozuk. Yeni bir dosya olu\u015fturuluyor.\")\n        else:\n            self.tasks = []\n<\/pre>\n<p><\/code><\/p>\n<h4>Uygulama Kapan\u0131\u015f\u0131nda G\u00f6revleri Kaydetme<\/h4>\n<p>Uygulama kapat\u0131lmadan \u00f6nce, mevcut g\u00f6rev listesini JSON dosyas\u0131na yazmal\u0131y\u0131z.<\/p>\n<pre><code class=\"language-python\">\n    def save_tasks(self):\n        with open(self.data_file, \"w\", encoding=\"utf-8\") as f:\n            json.dump(self.tasks, f, indent=4, ensure_ascii=False)\n<\/pre>\n<p><\/code><\/p>\n<p>Bu fonksiyon, g\u00f6rev listesinde herhangi bir de\u011fi\u015fiklik oldu\u011funda (ekleme, silme, tamamlama) \u00e7a\u011fr\u0131lmal\u0131d\u0131r.<\/p>\n<h3>Kullan\u0131c\u0131 Aray\u00fcz\u00fcn\u00fc Geli\u015ftirme ve Stil<\/h3>\n<p>Fonksiyonel bir uygulama yeterli de\u011fildir; modern ve estetik bir g\u00f6r\u00fcn\u00fcme sahip olmas\u0131 da kullan\u0131c\u0131 deneyimini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r. Tkinter, temel stil se\u00e7enekleri sunar.<\/p>\n<h4>Tkinter Temalar\u0131 ve Stiller<\/h4>\n<p>Tkinter'\u0131n varsay\u0131lan g\u00f6r\u00fcn\u00fcm\u00fc bazen eski moda bulunabilir. <code>ttk<\/code> (themed Tkinter) mod\u00fcl\u00fc, daha modern g\u00f6r\u00fcn\u00fcml\u00fc widget'lar ve temalar sunar. Ayr\u0131ca, widget'lar\u0131n arka plan renkleri, yaz\u0131 tipleri ve kenarl\u0131klar\u0131n\u0131 manuel olarak ayarlayarak da daha iyi bir g\u00f6r\u00fcn\u00fcm elde edebiliriz.<\/p>\n<pre><code class=\"language-python\">\nimport tkinter.ttk as ttk # ttk mod\u00fcl\u00fcn\u00fc i\u00e7e aktar\n\nclass ToDoMateApp:\n    def __init__(self, master):\n        self.master = master\n        master.title(\"ToDoMate \ud83d\udcdd\")\n        master.geometry(\"400x550\")\n        master.resizable(False, False)\n\n        # ttk stilini kullanma (opsiyonel, daha modern g\u00f6r\u00fcn\u00fcm i\u00e7in)\n        self.style = ttk.Style()\n        self.style.theme_use(\"clam\") # \"clam\", \"alt\", \"default\", \"vista\", \"xpnative\" gibi temalar mevcut\n        self.style.configure(\"TButton\", font=(\"Arial\", 10, \"bold\"), padding=5)\n        self.style.configure(\"TEntry\", font=(\"Arial\", 12), padding=5)\n\n        # ... (di\u011fer UI kurulumlar\u0131) ...\n<\/pre>\n<p><\/code><\/p>\n<h4>Modern G\u00f6r\u00fcn\u00fcm \u0130\u00e7in \u0130pu\u00e7lar\u0131<\/h4>\n<ul>\n<li><strong>Renk Paleti:<\/strong> Uygulaman\u0131z i\u00e7in ho\u015f bir renk paleti se\u00e7in. Pastel tonlar veya malzeme tasar\u0131m\u0131na yak\u0131n renkler modern bir hava katabilir.<\/li>\n<li><strong>Yaz\u0131 Tipleri:<\/strong> Okunabilir ve modern yaz\u0131 tipleri kullan\u0131n (\u00f6rne\u011fin, Arial, Segoe UI).<\/li>\n<li><strong>Bo\u015fluklar ve Hizalama:<\/strong> Widget'lar aras\u0131nda yeterli bo\u015fluk b\u0131rak\u0131n (<code>padx<\/code>, <code>pady<\/code>) ve d\u00fczenli bir hizalama (<code>grid<\/code> veya <code>pack<\/code> ile) sa\u011flay\u0131n.<\/li>\n<li><strong>Kenarl\u0131klar ve G\u00f6lgeler:<\/strong> Basit kenarl\u0131klar (<code>bd<\/code>, <code>relief<\/code>) veya daha geli\u015fmi\u015f efektler (biraz daha karma\u015f\u0131k olabilir) kullanarak derinlik hissi yarat\u0131n.<\/li>\n<\/ul>\n<p>Yukar\u0131daki kod \u00f6rneklerinde, butonlar ve \u00e7er\u00e7eveler i\u00e7in renkler ve kenarl\u0131klar ayarlanarak temel bir stil sa\u011flanm\u0131\u015ft\u0131r.<\/p>\n<h4>\u0130konlar ve G\u00f6rsel \u0130yile\u015ftirmeler<\/h4>\n<p>Uygulaman\u0131za ikonlar eklemek, g\u00f6rsel \u00e7ekicili\u011fi art\u0131r\u0131r. \u00d6rne\u011fin, silme butonu yerine bir \u00e7\u00f6p kutusu ikonu kullan\u0131labilir. Tkinter, <code>PhotoImage<\/code> s\u0131n\u0131f\u0131 ile PNG veya GIF gibi formatlardaki resimleri destekler.<\/p>\n<pre><code class=\"language-python\">\n# \u0130kon kullan\u0131m\u0131 \u00f6rne\u011fi (sil butonu i\u00e7in)\n# icon_delete = tk.PhotoImage(file=\"delete_icon.png\") # Bir ikon dosyas\u0131 varsayal\u0131m\n# delete_button = tk.Button(task_frame, image=icon_delete, command=lambda idx=i: self.delete_task(idx))\n# delete_button.image = icon_delete # Referans\u0131 korumak i\u00e7in\n<\/pre>\n<p><\/code><\/p>\n<p>Ancak, ikon dosyalar\u0131n\u0131n uygulaman\u0131zla birlikte da\u011f\u0131t\u0131lmas\u0131 gerekti\u011fini unutmay\u0131n.<\/p>\n<h3>Sonu\u00e7 ve Gelecek Geli\u015ftirmeler<\/h3>\n<p>Bu makalede, Python ve Tkinter kullanarak modern bir yap\u0131lacaklar listesi uygulamas\u0131 olan ToDoMate'i nas\u0131l geli\u015ftirece\u011fimizi ad\u0131m ad\u0131m \u00f6\u011frendik. Temel bir GUI penceresi olu\u015fturmaktan, g\u00f6revleri eklemeye, silmeye, tamamlamaya ve hatta verileri kal\u0131c\u0131 olarak saklamaya kadar bir\u00e7ok \u00f6nemli konuyu ele ald\u0131k. ToDoMate, Tkinter'\u0131n basitli\u011fini ve g\u00fcc\u00fcn\u00fc g\u00f6steren, pratik ve i\u015flevsel bir uygulamad\u0131r.<\/p>\n<h4>ToDoMate'in Potansiyeli<\/h4>\n<p>ToDoMate, g\u00fcnl\u00fck g\u00f6rev y\u00f6netimi i\u00e7in sa\u011flam bir temel sunar. Kullan\u0131c\u0131 dostu aray\u00fcz\u00fc ve temel \u00f6zellikleri sayesinde, ki\u015fisel \u00fcretkenli\u011fi art\u0131rmak isteyen herkes i\u00e7in de\u011ferli bir ara\u00e7 olabilir. Python'\u0131n esnekli\u011fi sayesinde, bu uygulaman\u0131n potansiyeli olduk\u00e7a geni\u015ftir.<\/p>\n<h4>Uygulamay\u0131 Daha da Geli\u015ftirme Fikirleri<\/h4>\n<p>ToDoMate'i daha da geli\u015ftirmek i\u00e7in a\u015fa\u011f\u0131daki \u00f6zellikler eklenebilir:<\/p>\n<ul>\n<li><strong>G\u00f6rev D\u00fczenleme:<\/strong> Mevcut g\u00f6rev metinlerini d\u00fczenleme yetene\u011fi.<\/li>\n<li><strong>Tarih ve Saat Ekleme:<\/strong> G\u00f6revlere son teslim tarihi veya hat\u0131rlat\u0131c\u0131lar ekleme.<\/li>\n<li><strong>Kategori ve Etiketleme:<\/strong> G\u00f6revleri kategorilere ay\u0131rma veya etiketleme.<\/li>\n<li><strong>Priorite Belirleme:<\/strong> G\u00f6revlere \u00f6ncelik seviyeleri atama (y\u00fcksek, orta, d\u00fc\u015f\u00fck).<\/li>\n<li><strong>Arama ve Filtreleme:<\/strong> G\u00f6revler aras\u0131nda arama yapma veya tamamlama durumuna g\u00f6re filtreleme.<\/li>\n<li><strong>Bildirimler:<\/strong> G\u00f6rev hat\u0131rlat\u0131c\u0131lar\u0131 i\u00e7in masa\u00fcst\u00fc bildirimleri.<\/li>\n<li><strong>G\u00f6rsel \u0130yile\u015ftirmeler:<\/strong> Daha geli\u015fmi\u015f temalar, animasyonlar veya \u00f6zel widget'lar.<\/li>\n<li><strong>Veritaban\u0131 Entegrasyonu:<\/strong> JSON yerine SQLite gibi bir veritaban\u0131 kullanarak daha sa\u011flam veri y\u00f6netimi.<\/li>\n<\/ul>\n<p>Bu ek \u00f6zellikler, ToDoMate'i daha g\u00fc\u00e7l\u00fc ve kapsaml\u0131 bir yap\u0131lacaklar listesi uygulamas\u0131na d\u00f6n\u00fc\u015ft\u00fcrebilir. Tkinter'\u0131n sundu\u011fu imkanlarla, hayal g\u00fcc\u00fcn\u00fcz\u00fcn s\u0131n\u0131rlar\u0131n\u0131 zorlayabilirsiniz.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<h4>ToDoMate hangi Python s\u00fcr\u00fcmleriyle uyumludur?<\/h4>\n<p>ToDoMate, Python 3.6 ve \u00fczeri t\u00fcm s\u00fcr\u00fcmlerle uyumludur. Tkinter, Python'\u0131n standart k\u00fct\u00fcphanesinin bir par\u00e7as\u0131 oldu\u011fu i\u00e7in ek bir ba\u011f\u0131ml\u0131l\u0131k gerektirmez.<\/p>\n<h4>Uygulamay\u0131 farkl\u0131 i\u015fletim sistemlerinde kullanabilir miyim?<\/h4>\n<p>Evet, Tkinter \u00e7apraz platform bir k\u00fct\u00fcphane oldu\u011fu i\u00e7in ToDoMate uygulamas\u0131n\u0131 Windows, macOS ve Linux gibi farkl\u0131 i\u015fletim sistemlerinde sorunsuz bir \u015fekilde \u00e7al\u0131\u015ft\u0131rabilirsiniz. Sadece Python'\u0131n kurulu olmas\u0131 yeterlidir.<\/p>\n<h4>Verilerimi nas\u0131l yedekleyebilirim?<\/h4>\n<p>ToDoMate, g\u00f6revlerinizi uygulaman\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131 dizinde <code>tasks.json<\/code> ad\u0131nda bir dosyaya kaydeder. Bu dosyay\u0131 d\u00fczenli olarak yedekleyerek g\u00f6revlerinizi g\u00fcvende tutabilirsiniz. Farkl\u0131 bir konuma ta\u015f\u0131mak isterseniz, <code>data_file<\/code> de\u011fi\u015fkenini g\u00fcncelleyebilirsiniz.<\/p>\n<h4>Uygulamaya yeni \u00f6zellikler eklemek zor mu?<\/h4>\n<p>Hay\u0131r, uygulaman\u0131n mod\u00fcler yap\u0131s\u0131 sayesinde yeni \u00f6zellikler eklemek olduk\u00e7a kolayd\u0131r. \u00d6rne\u011fin, yeni bir buton veya giri\u015f alan\u0131 ekleyerek ve ilgili fonksiyonlar\u0131 yazarak kolayca geni\u015fletebilirsiniz. Tkinter'\u0131n basit API'si, bu s\u00fcreci basitle\u015ftirir.<\/p>\n","protected":false},"excerpt":{"rendered":"Python, veri biliminden web geli\u015ftirmeye kadar bir\u00e7ok alanda kullan\u0131lan \u00e7ok y\u00f6nl\u00fc bir programlama dilidir. Ancak, masa\u00fcst\u00fc uygulamalar\u0131 geli\u015ftirme &#8230;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1403],"tags":[],"class_list":{"0":"post-37575","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-python","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>ToDoMate \ud83d\udcdd: Python ile Modern Bir Tkinter Yap\u0131lacaklar Listesi Uygulamas\u0131 Geli\u015ftirme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/todomate-\ud83d\udcdd-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ToDoMate \ud83d\udcdd: Python ile Modern Bir Tkinter Yap\u0131lacaklar Listesi Uygulamas\u0131 Geli\u015ftirme\" \/>\n<meta property=\"og:description\" content=\"Python, veri biliminden web geli\u015ftirmeye kadar bir\u00e7ok alanda kullan\u0131lan \u00e7ok y\u00f6nl\u00fc bir programlama dilidir. Ancak, masa\u00fcst\u00fc uygulamalar\u0131 geli\u015ftirme ...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/todomate-\ud83d\udcdd-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-09T12:00:43+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/todomate-%f0%9f%93%9d-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/todomate-%f0%9f%93%9d-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"ToDoMate \ud83d\udcdd: Python ile Modern Bir Tkinter Yap\u0131lacaklar Listesi Uygulamas\u0131 Geli\u015ftirme\",\"datePublished\":\"2026-01-09T12:00:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/todomate-%f0%9f%93%9d-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/\"},\"wordCount\":1858,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Python\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/todomate-%f0%9f%93%9d-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/todomate-%f0%9f%93%9d-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/todomate-%f0%9f%93%9d-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/\",\"name\":\"ToDoMate \ud83d\udcdd: Python ile Modern Bir Tkinter Yap\u0131lacaklar Listesi Uygulamas\u0131 Geli\u015ftirme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-09T12:00:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/todomate-%f0%9f%93%9d-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/todomate-%f0%9f%93%9d-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/todomate-%f0%9f%93%9d-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ToDoMate \ud83d\udcdd: Python ile Modern Bir Tkinter Yap\u0131lacaklar Listesi Uygulamas\u0131 Geli\u015ftirme\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"ToDoMate \ud83d\udcdd: Python ile Modern Bir Tkinter Yap\u0131lacaklar Listesi Uygulamas\u0131 Geli\u015ftirme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/todomate-\ud83d\udcdd-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/","og_locale":"tr_TR","og_type":"article","og_title":"ToDoMate \ud83d\udcdd: Python ile Modern Bir Tkinter Yap\u0131lacaklar Listesi Uygulamas\u0131 Geli\u015ftirme","og_description":"Python, veri biliminden web geli\u015ftirmeye kadar bir\u00e7ok alanda kullan\u0131lan \u00e7ok y\u00f6nl\u00fc bir programlama dilidir. Ancak, masa\u00fcst\u00fc uygulamalar\u0131 geli\u015ftirme ...","og_url":"https:\/\/fatihsoysal.com\/blog\/todomate-\ud83d\udcdd-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-09T12:00:43+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"13 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/todomate-%f0%9f%93%9d-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/todomate-%f0%9f%93%9d-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"ToDoMate \ud83d\udcdd: Python ile Modern Bir Tkinter Yap\u0131lacaklar Listesi Uygulamas\u0131 Geli\u015ftirme","datePublished":"2026-01-09T12:00:43+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/todomate-%f0%9f%93%9d-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/"},"wordCount":1858,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Python"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/todomate-%f0%9f%93%9d-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/todomate-%f0%9f%93%9d-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/","url":"https:\/\/fatihsoysal.com\/blog\/todomate-%f0%9f%93%9d-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/","name":"ToDoMate \ud83d\udcdd: Python ile Modern Bir Tkinter Yap\u0131lacaklar Listesi Uygulamas\u0131 Geli\u015ftirme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-09T12:00:43+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/todomate-%f0%9f%93%9d-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/todomate-%f0%9f%93%9d-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/todomate-%f0%9f%93%9d-python-ile-modern-bir-tkinter-yapilacaklar-listesi-uygulamasi-gelistirme\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"ToDoMate \ud83d\udcdd: Python ile Modern Bir Tkinter Yap\u0131lacaklar Listesi Uygulamas\u0131 Geli\u015ftirme"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37575","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=37575"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37575\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37575"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37575"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37575"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}