Python tkinter sqlite kayıt giriş işlemi

nerde hata yapıyorum

import tkinter as tk
from tkinter import messagebox
import sqlite3

pencere = tk.Tk()
pencere.title("Giriş Ekranı")
pencere.state("zoomed")
pencere.configure(background="white")
baglanti = sqlite3.connect("kayıtekranı.db.")
verinere = baglanti.cursor()
baglanti.commit()

etiket1 = tk.Label(text='Kullanıcı Adınız?', background="white", foreground="black")
etiket1.place(x=610, y=350)
etiket2 = tk.Label(text='Şifre?', background="white", foreground="black")
etiket2.place(x=630, y=400)
tb_aden = tk.Entry()
tb_aden.place(x=715, y=365)
tb_aden1 = tk.Entry()
tb_aden1.place(x=715, y=415)


def listbox():
    list1 = tk.Listbox()
    list1.place(x=1375, y=550)
    listbox = tk.Listbox()



def giris():
    cur = conn.cursor()
    cur.execute("SELECT * FROM kayıtolanlar WHERE gmail=?", (gmail.get(),))

    rows = cur.fetchall()
    for row in rows:
     print(row)

    if tb_aden.get() == "":
        messagebox.showerror("Hata Adı", "Kullanıcı Adı Boş Bırakılamaz.")
    else:
        if tb_aden1.get() == "":
            messagebox.showerror("Hata Şifre", "Şifre boş bırakılamaz")




def kayit():
    pencere.destroy()
    kayitpencere()


btngiris = tk.Button(text='Giriş Yap', command=giris, background="black", foreground="white")
btngiris.place(x=850, y=369)

btnkayıt = tk.Button(text="Kayıt Ol", command=kayit, background="black", foreground="white")
btnkayıt.place(x=737, y=435)

btnlistbox = tk.Button(text="Listboxa aktar", command=listbox, background="black", foreground="white")
btnlistbox.place(x=1400, y=735)


def kayitpencere():
    import tkinter as tk
    from tkinter import messagebox
    import sqlite3
    pencere = tk.Tk()
    pencere.title("Giriş Ekranı")
    pencere.state("zoomed")
    pencere.configure(background="white")
    data = sqlite3.connect("kayıtekranı.db.")
    imlec = data.cursor()
    imlec.execute("CREATE TABLE IF NOT EXISTS kayıtolanlar(isim TEXT, soyisim TEXT, gmail TEXT, sifre TEXT)")

    etiket3 = tk.Label(text="İsminiz")
    etiket3.place(x=610, y=200)
    etiket4 = tk.Label(text="Soy İsminiz")
    etiket4.place(x=610, y=250)
    etiket5 = tk.Label(text="Gmail")
    etiket5.place(x=610, y=300)
    etiket6 = tk.Label(text="Şifre")
    etiket6.place(x=600, y=350)
    etiket7 = tk.Label(text="Şifre Tekrar")
    etiket7.place(x=578, y=400)
    isim = tk.Entry()
    isim.place(x=700, y=200)
    soyisim = tk.Entry()
    soyisim.place(x=700, y=250)
    gmail = tk.Entry()
    gmail.place(x=700, y=300)
    şifre = tk.Entry()
    şifre.place(x=700, y=350)
    şifretekrar = tk.Entry()
    şifretekrar.place(x=700, y=400)

    def gönder():
        if isim.get() == "" or soyisim.get() == "" or gmail.get() == "" or şifre.get() == "" or şifretekrar.get() == "":
            messagebox.showerror("Hata Boş!.", "Boş alan bırakmayınız..")
        else:
            messagebox.showinfo("Kayıt", "Kayıt başarılı... Aktarılıyor")
            imlec.execute("INSERT INTO kayıtolanlar (isim,soyisim,gmail,sifre) values (?,?,?,?)",
                          (isim.get(), soyisim.get(), gmail.get(), şifre.get()))
            data.commit()
            pencere.destroy()

    btngönder = tk.Button(text='Kayıt ol.', command=gönder, background="grey", foreground="black")
    btngönder.place(x=730, y=500)


def girispencere():
    import tkinter as tk
    from tkinter import messagebox
    import sqlite3
    pencere = tk.Tk()
    pencere.title("Giriş Ekranı")
    pencere.state("zoomed")
    pencere.configure(background="white")
    baglanti = sqlite3.connect("kayıtekranı.db.")
    verinere = baglanti.cursor()
    baglanti.commit()


pencere.mainloop()

sorun ne :smiley: sen ne yapmaya çalışıyon kaç gündür anlamadım.

dün de dedim bugünde aynısını diyorum. class kullanmayı öğrenmeden yapamazsın. yapsanda alt alta bu şekilde kod yazılmaz. classdan daha büyük sorunların var. aynı kütüphane 2 kere import edilmez. ya class öğren yada günlerce uğraş dur.

al bakalım istediğin kod bu. sayfa geçişi var. 2 tane entry deki verileri database e kaydediyor. bunun oluru bu başka şekilde yapamazsın. bu kodu okuyamayıp kendi kafana göre yapmaya çalışırsan 1 ay uğraşırsın.

import tkinter as tk
from tkinter import ttk
import sqlite3

class DataBase():
    db = sqlite3.connect("db.db")
    im = db.cursor()
    def create_table(self, *args):
        self.im.execute("CREATE TABLE IF NOT EXISTS Users (username, password)")

    def add_data(self, *args):
        self.im.execute("INSERT INTO Users (username, password) VALUES ({},{})".format(args[0], args[1]),)
        self.db.commit()

    def select_data(self):
        self.im.execute("SELECT * FROM Users")
        print(self.im.fetchall())

class sjabloon(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)

        container = tk.Frame(self, width=600, height=400)
        container.grid(column=0, row=1 , columnspan= 10)

        self.frames = {}

        for F in (StartPage, HomePage):
            frame = F(container, self)
            self.frames[F] = frame
            frame.grid(row=1, column = 0, sticky="nsew", columnspan= 10)

        self.show_page("StartPage")

        self.frame_footer = tk.Frame(self, background='yellow', width=600, height=50)
        self.frame_footer.grid(column=0, row=3 , columnspan= 10)

    def show_page(self, page_name):

        for F in self.frames:
            if F.__name__ == page_name:
                self.show_frame(F)
                return
        print(ERROR_404)

    def show_frame(self, cont):
        frame = self.frames[cont]
        frame.tkraise()

class HomePage(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        button1 = ttk.Button(self, text="ikinci sayfa",command=lambda: controller.show_page("StartPage"))
        button1.pack()

        button2 = ttk.Button(self, text="Disagree",command=controller.destroy)
        button2.pack()



class StartPage(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        data = DataBase()
        data.create_table()

        username = ttk.Entry(self)
        username.pack()

        password = ttk.Entry(self)
        password.pack()

        dataSave = ttk.Button(self, text="kayıt", command = lambda : data.add_data(username.get(), password.get()))
        dataSave.pack()

        button1 = ttk.Button(self, text="birinci sayfa",command=lambda: controller.show_page("HomePage"))
        button1.pack()

        button2 = ttk.Button(self, text="Disagree",command=controller.destroy)
        button2.pack()

if __name__ == "__main__":
    sjabloon = sjabloon()
    sjabloon.mainloop()

1 Beğeni

Bence çalıştığın kütüphanelerle ilgili kaynaklara bak sonra proje yap.

hocam öncelikle python’ın temellerini oturtmanız gerekiyor. tkinter hiç kullanmadım bilmiyorum fakat genel bazı sıkıntılar görüyorum. örneğin her fonksiyonda aynı kütüphaneyi import etmişsiniz, çoğu zaman fonksiyonlarda bir şey import etmeyiz. en üstte de aynı şekilde tkinter’ı import etmişsiniz üzerine bir de tkinterdan messagebox’ı import etmişsiniz. buna gerek yok tk.messagebox ile buna ulaşabilirsiniz. bir de ne yapmaya çalıştığınızı anlatırsanız belki birkaç arkadaşla oturup daha doğru ve düzgün yazarsınız birlikte. temeliniz olmadığı için kendinize eziyet ediyorsunuz.