Merhaba, herkese iyi forumlar.
Öncelikle kendi kullanımım için sonrasında da hoşuna giden olursa diye paylaşmayı düşünerek programladığım bir antreman istatistikleri tutan bir programım var. Belli kısımlarını bitirdim.
Yaptıklarımı sıralayacağım, ardından çözüm bulamadığım bazı noktalar var. Bir de fikir üretemediğim bazı noktalar var. Ayrı ayrı yazacağım.
Kullandığım pencere modülü >> Tkinter
Kullandığım veritabanı modülü >> Sqlite
Yaptıklarım;
- Ana ekranda bulunan çıkış yap butonu çalışıyor.
- Ana ekranda bulunan “egzersiz kayıt” butonu çalışıyor. Tıklandığı zaman kayıt penceresini açıyor
- Kayıt penceresinde bulunan “kaydet”, “temizle”, “vazgeç” butonları çalışıyor.
- Kayıt penceresinde bulunan “kaydet” butonuna basıldığı zaman entry kontrolleri yapıyor. Uygun koşullarda sqlite a veriyi kayıt ediyor. Hata varsa uyarı mesajı veriyor.
Çözüm Bulamadıklarım;
-
Kullanıcı tarafından kayıt edilmiş verileri, kullanıcı daha sonradan görmek isterse nasıl bir ekranda nasıl bir formatta nasıl bir front-end görünümde sunmalıyım? Grafik çizelgesi düşündüm fakat bilgim yok. Alt alta dümdüz sıralamayı düşündüm fakat burada text aracını mı kullansam daha doğru olur label mi ya da başka ne kullanabilirim?
-
Kullanıcı butonlara her tıkladığın da tıkladığı kadar pencere açıyor. Bunu engellemek istiyorum. Kafa karıştırıcı bir kaç çözüm geldi aklıma denedim olmadı. Önerileriniz nedir?
Benim söylediklerim dışında sizlerinde gözlemleyip tavsiyede bulunacağı fikirlerinizi de duymak isterim. Şimdiden desteğiniz için teşekkür ederim.
Tek dosyadan oluşan antrenman.py kodları;
from tkinter import *
import sqlite3
from time import sleep
class Application(object):
def __init__(self):
self.create_database()
self.main()
def create_database(self):
self.con = sqlite3.connect("database.db")
self.cursor = self.con.cursor()
self.cursor.execute("CREATE TABLE IF NOT EXISTS ANTREMAN_DATA (DATE TEXT, ACTIVITY TEXT, TOTAL INT)")
self.con.close()
def main(self):
self.pencere1 = Tk()
self.pencere1.title("ANTREMAN TAKİP PROGRAMI")
self.pencere1.geometry("+760+440")
self.pencere1.resizable(FALSE, FALSE)
self.cerceve1 = Frame(self.pencere1)
self.cerceve1.grid(row=0, column=0, padx=5)
self.button1 = Button(self.pencere1, text="EGZERSİZ KAYDET", command=self.save)
self.button1.grid(row=0, column=1)
self.cerceve1 = Frame(self.pencere1)
self.cerceve1.grid(row=0, column=2, padx=5)
self.button2 = Button(self.pencere1, text="EGZERSİZ TAKİP", command=self.show)
self.button2.grid(row=0, column=3)
self.cerceve1 = Frame(self.pencere1)
self.cerceve1.grid(row=0, column=4, padx=5)
self.button3 = Button(self.pencere1, text="ÇIKIŞ YAP", command=self.pencere1.quit)
self.button3.grid(row=0, column=5)
self.cerceve1 = Frame(self.pencere1)
self.cerceve1.grid(row=0, column=6, padx=5)
def save(self):
self.pencere2 = Tk()
self.pencere2.title("ANTREMAN KAYIT EKRANI")
self.pencere2.resizable(FALSE, FALSE)
self.pencere2.geometry("+780+450")
# birinci satır
self.cerceve1 = Frame(self.pencere2)
self.cerceve1.grid(row=0, column=0, padx=5)
self.etiket1 = Label(self.pencere2, text="TARİH >>")
self.etiket1.grid(row=0, column=1)
self.cerceve1 = Frame(self.pencere2)
self.cerceve1.grid(row=0, column=2, padx=5)
self.girdi1 = Entry(self.pencere2)
self.girdi1.grid(row=0, column=3)
# ikinci satır
self.cerceve1 = Frame(self.pencere2)
self.cerceve1.grid(row=1, column=0, padx=5)
self.etiket2 = Label(self.pencere2, text="ANTREMAN >>")
self.etiket2.grid(row=1, column=1)
self.cerceve1 = Frame(self.pencere2)
self.cerceve1.grid(row=0, column=2, padx=5)
self.girdi2 = Entry(self.pencere2)
self.girdi2.grid(row=1, column=3)
# üçüncü satır
self.cerceve1 = Frame(self.pencere2)
self.cerceve1.grid(row=2, column=0, padx=5)
self.etiket3 = Label(self.pencere2, text="TOPLAM >>")
self.etiket3.grid(row=2, column=1)
self.cerceve1 = Frame(self.pencere2)
self.cerceve1.grid(row=2, column=2, padx=5)
self.girdi3 = Entry(self.pencere2)
self.girdi3.grid(row=2, column=3)
# dördüncü satır
self.cerceve1 = Frame(self.pencere2)
self.cerceve1.grid(row=3, column=0)
self.button4 = Button(self.pencere2, text="KAYDET", command=self.save_data)
self.button4.grid(row=3, column=1)
self.button5 = Button(self.pencere2, text="TEMİZLE", command=self.delete)
self.button5.grid(row=3, column=2)
self.button6 = Button(self.pencere2, text="VAZGEÇ", command=self.pencere2.destroy)
self.button6.grid(row=3, column=3)
def show(self):
pass
def save_data(self):
self.date = self.girdi1.get()
self.activity = self.girdi2.get()
self.total = self.girdi3.get()
if len(self.date) != 0 or len(self.activity) != 0 and len(self.total) != 0:
self.total = int(self.total)
self.con = sqlite3.connect("database.db")
self.cursor = self.con.cursor()
self.cursor.execute("INSERT INTO ANTREMAN_DATA VALUES(?,?,?)",(self.date, self.activity, self.total))
self.con.commit()
self.con.close()
self.girdi1.delete(0,END)
self.girdi2.delete(0,END)
self.girdi3.delete(0,END)
self.good_win = Tk()
self.good_win.title("BAŞARI EKRANI")
self.good_win.geometry("+670+460")
self.good_win.resizable(FALSE, FALSE)
self.good_tex = Label(self.good_win, text="KAYIT İŞLEMİ BAŞARILI BİR ŞEKİLDE GERÇEKLEŞTİ.")
self.good_tex.pack()
self.good_but = Button(self.good_win, text="TAMAM", command=self.good_win.destroy)
self.good_but.pack()
else:
self.warning_win = Tk()
self.warning_win.title("UYARI EKRANI")
self.warning_win.geometry("+670+460")
self.warning_win.resizable(FALSE, FALSE)
self.warning_tex = Label(self.warning_win, text="HATALI BİLGİ GİRİŞİ YAPTINIZ! LÜTFEN TEKRAR DENEYİNİZ.", fg="yellow", bg="black", font="Helvatica, 14 bold")
self.warning_tex.pack()
self.warning_but = Button(self.warning_win, text="TAMAM", command=self.warning_win.destroy)
self.warning_but.pack()
def delete(self):
self.girdi1.delete(0,END)
self.girdi2.delete(0,END)
self.girdi3.delete(0,END)
app = Application()
mainloop()