Python - Tkinter AttributeError: 'NoneType' object has no attribute 'get' hatasını çözemiyorum

Merhaba arkadaşlar,

Aşağıdaki kodları çalıştırdıktan sonra save_data fonksiyonuna gelince AttributeError: 'NoneType' object has no attribute 'get' hatasını alıyorum. Çözemedim. Gözümden kaçan bir şey var gibi duruyor. Ne yapmam lazım? Yardımcı olur musunuz?

Not >> aynı hata clear_data fonksiyonu içinde geçerli orada da .delete() için aynı hatayı veriyor

from tkinter import *
import sqlite3
from datetime import datetime


class Application(object):

    def __init__(self):
        self.root_1 = None
        self.label_list = ["TARIH", "TUR", "ACIKLAMA", "TUTAR"]
        self.label_1 = None
        self.x = None
        self.y = None

        self.entry_1 = None
        self.entry_2 = None
        self.entry_3 = None
        self.entry_4 = None

        self.save_button = None
        self.clear_button = None

        self.con = None
        self.cursor = None

        self.main()

    def main(self):
        self.root_1 = Tk()
        self.root_1.title("SATEMSOFT # ALBARAKA")
        self.root_1.resizable(FALSE, FALSE)
        self.root_1.iconbitmap("img/dolar.ico")

        self.x = 1
        self.y = 1
        for self.i in self.label_list:
            self.label_1 = Label(self.root_1, text=self.i, width=20).grid(row=self.x, column=self.y)
            self.x += 1

        self.entry_1 = Entry(self.root_1, width=25).grid(row=1, column=2)
        self.entry_2 = Entry(self.root_1, width=25).grid(row=2, column=2)
        self.entry_3 = Entry(self.root_1, width=25).grid(row=3, column=2)
        self.entry_4 = Entry(self.root_1, width=25).grid(row=4, column=2)

        self.save_button = Button(self.root_1, text="KAYDET", width=25, command=self.save_data).grid(row=5, column=1)
        self.clear_button = Button(self.root_1, text="TEMIZLE", width=25, command=self.clear_data).grid(row=5, column=2)

        mainloop()

    def save_data(self):
        print("runnig")
        self.con = sqlite3.connect("database/db.db")
        self.cursor = self.con.cursor()

        self.cursor.execute("INSERT INTO ALBARAKA VALUES(?,?,?,?,?,?)", (self.entry_1.get(), self.entry_2.get(),
                                                                         self.entry_3.get(), float(self.entry_4.get()),
                                                                         1, datetime.now()))
        self.con.commit()
        self.con.close()

    def clear_data(self):
        self.entry_1.delete(0, END)
        self.entry_2.delete(0, END)
        self.entry_3.delete(0, END)
        self.entry_4.delete(0, END)

merhaba Entryyi oluşturduktan sonra .grid ile konumlandırdığınızda Entryye olan referansı kaybediyorsunuz çünkü .grid metodu None döndürüyor, Entry objesini geri döndürmüyor. Dolayısıyla Entryler (ve benzer şekilde Buttonlar mesela) oluşturuluyor ancak referanslar kayboluyor. Çaresi

    self.entry_1 = Entry(self.root_1, width=25).grid(row=1, column=2)

yerine

    self.entry_1 = Entry(self.root_1, width=25)
    self.entry_1.grid(row=1, column=2)

şeklinde objeyi oluşturmayla pozisyonlamayı ayırmaktır



benzer bir durum sss’de varmış Sıkça Sorulan Sorular (SSS)

4 Beğeni

Teşekkür ederim sorunum çözüldü.