Arkadaşlar merhaba yazmış olduğum programda yeni veri oluştur butonuyla yeni bir pencere açıyorum orada gerekli bilgileri doldurduktan sonra kaydet butonuna basınca bu verileri sqlite veritabanına kaydetmek istiyorum fakat kaydet butonuna basınca hata veriyor.
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2800.0_x64__qbz5n2kfra8p0\lib\tkinter\__init__.py", line 1892, in __call__
return self.func(*args)
File "C:\Users\furko\pythonProject1\main.py", line 136, in kayit_yap
a = tckimlik.get()
NameError: name 'tckimlik' is not defined
Process finished with exit code 0
Bu hatayı nasıl çözebilirim yeni pencere açmak için def fonksiyonu kullandım fonksiyon altına fonksiyon girdiğim için mi böyle oldu acaba yardımcı olursanız çok sevinirim. Kaynak kodum aşağıdadır.
# Import module
import tkinter
from tkinter import *
from tkinter.ttk import *
from tkinter import filedialog
from tkinter import messagebox
import sqlite3
# Veritabanı Oluşturma
vt = sqlite3.connect("sm.db")
im = vt.cursor()
im.execute("create table if not exists insanlar(tc TEXT, adivesoyadi TEXT, cinsiyet TEXT, memleket TEXT, adresilce TEXT, acikadres TEXT, telno TEXT, sosyalmedya TEXT, karakteri TEXT, zaaflari TEXT, ekbilgiler TEXT)")
vt.commit()
# Obje Yaratma
pencere = Tk()
# Ana Özellikler
pencere.geometry("1200x600")
pencere.maxsize(1200, 600)
pencere.title("Furkan Private SM Database Systems")
# Resim ekleme Kısmı
arkaplan = PhotoImage(file = "bakim.png")
ikon = PhotoImage(file="isimsizlogo.png")
sorbuton = PhotoImage(file="button.png")
veriolustur = PhotoImage(file="dataolustur.png")
veriarkaplan = PhotoImage(file="veribg.png")
cikisdugmesi = PhotoImage(file="cikis.png")
uploadresmi = PhotoImage(file="uploadimage.PNG")
yuklebuton = PhotoImage(file="yukle.png")
kaydetbutonu = PhotoImage(file="kaydetbuton.png")
# Arkaplan Resmi
anakatman = Label(pencere, image = arkaplan)
anakatman.place(x = -2, y = 0)
# Mesajlar
def mesaj1(text):
msg = messagebox.showinfo(text, "Kayıt Başarılı.!")
def mesaj2(text):
msg = messagebox.showerror(text, "Bu Kişi Zaten Kayıtlı.!")
def mesaj3(text):
msg = messagebox.showerror(text, "Bu İsimde Kayıt Bulunamadı.!")
# Veri Giriş Pencere Ayarları
def verieklemepenceresi():
veripenceresi = Toplevel()
veripenceresi.geometry("800x700")
veripenceresi.maxsize(800, 700)
veripenceresi.title("Furkan Database Systems")
baslik = tkinter.Label(veripenceresi, image= veriarkaplan)
baslik.pack()
etiket3 = tkinter.Label(veripenceresi, text="Yeni Kayıt Ekleme Ekranı", font="Xirod-regular", fg="white", bg="#363636")
etiket3.place(x=200, y=4)
# Veri Giriş 1
etiket4 = tkinter.Label(veripenceresi, text="tc no", font="Xirod-regular 10", fg="white", bg="#363636")
etiket4.place(x=10, y=65)
tckimlik = tkinter.Entry(veripenceresi, font="Arial 13" , bd=5, bg="#e6c619", width=18)
tckimlik.place(x=10, y=85)
# Veri Giriş 2
etiket5 = tkinter.Label(veripenceresi, text="ad", font="Xirod-regular 10", fg="white", bg="#363636")
etiket5.place(x=200, y=65)
isim = tkinter.Entry(veripenceresi, font="Arial 13" , bd=5 ,bg="#e6c619", width=18)
isim.place(x=200, y=85)
# Veri Giriş 3
etiket6 = tkinter.Label(veripenceresi, text="soyad", font="Xirod-regular 10", fg="white", bg="#363636")
etiket6.place(x=390, y=65)
soyad = tkinter.Entry(veripenceresi,font="Arial 13", bd=5 ,bg="#e6c619", width=18)
soyad.place(x=390, y=85)
# Veri Giriş 4
etiket7 = tkinter.Label(veripenceresi, text="cinsiyet", font="Xirod-regular 10", fg="white", bg="#363636")
etiket7.place(x=580, y=65)
cinsiyet = tkinter.Entry(veripenceresi,font="Arial 13", bd=5 ,bg="#e6c619", width=18)
cinsiyet.place(x=580, y=85)
# Veri Giriş 5
etiket8 = tkinter.Label(veripenceresi, text="memleket", font="Xirod-regular 10", fg="white", bg="#363636")
etiket8.place(x=10, y=150)
memleket = tkinter.Entry(veripenceresi, font="Arial 13",bd=5 ,bg="#e6c619", width=18)
memleket.place(x=10, y=170)
# Veri Giriş 6
etiket9 = tkinter.Label(veripenceresi, text="adres il/ilçe", font="Xirod-regular 10", fg="white", bg="#363636")
etiket9.place(x=200, y=150)
adresil = tkinter.Entry(veripenceresi, font="Arial 13",bd=5 ,bg="#e6c619", width=18)
adresil.place(x=200, y=170)
# Veri Giriş 7
etiket10 = tkinter.Label(veripenceresi, text="açık adres", font="Xirod-regular 10", fg="white", bg="#363636")
etiket10.place(x=390, y=150)
acikadres = tkinter.Entry(veripenceresi, font="Arial 13",bd=5 ,bg="#e6c619", width=18)
acikadres.place(x=390, y=170)
# Veri Giriş 8
etiket11 = tkinter.Label(veripenceresi, text="tel no", font="Xirod-regular 10", fg="white", bg="#363636")
etiket11.place(x=580, y=150)
telno = tkinter.Entry(veripenceresi, font="Arial 13", bd=5 ,bg="#e6c619", width=18)
telno.place(x=580, y=170)
# Veri Giriş 9
etiket12 = tkinter.Label(veripenceresi, text="sosyal medya", font="Xirod-regular 10", fg="white", bg="#363636")
etiket12.place(x=8, y=220)
sosyalmedya = tkinter.Text(veripenceresi,font="Arial 11", bd=5 ,bg="#e6c619",height=10,width=25)
sosyalmedya.place(x=8, y=240)
# Veri Giriş 10
etiket13 = tkinter.Label(veripenceresi, text="karakteri", font="Xirod-regular 10", fg="white", bg="#363636")
etiket13.place(x=275, y=220)
karakteristik = tkinter.Text(veripenceresi, font="Arial 11",bd=5, bg="#e6c619", height=10, width=25)
karakteristik.place(x=275, y=240)
# Veri Giriş 11
etiket14 = tkinter.Label(veripenceresi, text="zaafiyetleri", font="Xirod-regular 10", fg="white", bg="#363636")
etiket14.place(x=540, y=220)
zaafiyet = tkinter.Text(veripenceresi, font="Arial 11",bd=5, bg="#e6c619", height=10, width=25)
zaafiyet.place(x=540, y=240)
# Veri Giriş 12
etiket15 = tkinter.Label(veripenceresi, text="ek bilgiler", font="Xirod-regular 10", fg="white", bg="#363636")
etiket15.place(x=8, y=440)
ekbilgiler = tkinter.Text(veripenceresi, font="Arial 11",bd=5, bg="#e6c619", height=10, width=25)
ekbilgiler.place(x=8, y=460)
# Kaydet Butonu
kaydetbuton = tkinter.Button(veripenceresi, bg="#363636", bd=5, activebackground="#e6c619", height=40, width=60,image=kaydetbutonu, command=kayit_yap)
kaydetbuton.place(x=300, y=530)
# Kayıt Yapma Fonksiyonu
def kayit_yap():
a = tckimlik.get()
b = isim.get()
c = cinsiyet.get()
d = memleket.get()
e = adresil.get()
f = acikadres.get()
g = telno.get()
h = sosyalmedya.get()
j = karakteristik.get()
k = zaafiyet.get()
l = ekbilgiler.get()
def degerle():
im.execute("insert into insanlar values(?,?,?,?,?,?,?,?,?,?,?)", [a,b,c,d,e,f,g,h,j,k,l])
vt.commit()
kod=0
im.execute("""SELECT adivesoyadi FROM insanlar""")
kontrol=im.fetchall()
for i in kontrol:
ad_kontrol = i[0]
if ad_kontrol == a:
mesaj2("Kayıt Var")
kod=1
if kod == 0:
degerle()
mesaj1("Kayıt")
# Upload
"""etiket15 = tkinter.Label(veripenceresi, text="resim/dosya yükle", font="Xirod-regular 10", fg="white", bg="#363636")
etiket15.place(x=280, y=520)
yüklemeresim = tkinter.Label(veripenceresi,image=uploadresmi)
yüklemeresim.place(x=280,y=545)
def UploadAction(event=None):
filename = filedialog.askopenfilename()
print('Selected:', filename)
uploadbuton = tkinter.Button(veripenceresi, image=yuklebuton, bg="#363636" ,activebackground="#e6c619",command=UploadAction)
uploadbuton.place(x=350,y=760)"""
# Yazı Kısmı
etiket1= tkinter.Label(anakatman, text="Hoşgeldin Sahip..!", font="Xirod-Regular", fg="white", bg="#363636")
etiket1.place(y=255, x=460)
etiket2= tkinter.Label(anakatman, text="Sorgulanacak Kişi:", font="Xirod-Regular 10", fg="white", bg="#363636")
etiket2.place(y=330, x=503)
# Arama Çubuğu
giris = tkinter.Entry(pencere, bg="#e6c619",font="Arial 13" ,fg="black" ,bd=8,width=27)
giris.place(x=470, y=350)
# Butonlar
btn = tkinter.Button(pencere, height=30, width=30, bd=3 ,bg="#363636",image= sorbuton, activebackground="#e6c619",command=Entry)
btn.place(x=735 ,y=350)
cikis = tkinter.Button(pencere, height=30, width=60, image=cikisdugmesi, bg="#363636", activebackground="#e6c619", command=pencere.quit)
cikis.place(x=580, y=480)
btn2 = tkinter.Button(pencere,height=30, width=200, image=veriolustur,bg="#363636", activebackground="#e6c619", command=verieklemepenceresi)
btn2.place(x=510, y=430)
# Pencere Üst İkonu
pencere.iconphoto(False, ikon)
# Döngü
pencere.mainloop()