Kisisel Muhasebe Programi

Merhabalar, Kişisel Muhasebe adı altında bir tkinter ile gui programı yazıyorum . Fakat tkinterde çok yeniyim o yüzden yardımınızı bekliyorum.

import sqlite3
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
from tkinter import Scrollbar

window = tk.Tk()
window.geometry("1200x700")
window.title("Kişisel Muhasebe")

def fileFunction():
    print("here")

menubar = tk.Menu(window)
window.config(menu = menubar)

file = tk.Menu(menubar)
edit = tk.Menu(menubar)

menubar.add_cascade(label = "Dosya", menu = file)
menubar.add_cascade(label = "Yardım", menu = edit,command = fileFunction)

file.add_command(label = "new file", command =fileFunction )

frame1 = tk.LabelFrame(window,text = "Bütün Muhasebe",width=700, height = 615,)
frame1.grid(row = 0, column = 0)




frame2 = tk.LabelFrame(window, text = 'Araçlar',width=400, height = 600,padx = 10,pady=10)
frame2.grid(row = 0, column = 1)

tabs1 = tk.LabelFrame(frame2, text = 'Ara', width=400, height = 200,padx = 5,pady=5)
tabs1.grid(row = 0, column = 0)

tabs2 = tk.LabelFrame(frame2, text = 'Yeni Ekle', width=400, height = 200,padx = 5,pady=5)
tabs2.grid(row = 1, column = 0)

tabs3 = tk.LabelFrame(frame2, text = 'Sil', width=400, height = 200,padx = 5,pady=5)
tabs3.grid(row = 2, column = 0)

tk.Label(frame1, text = "Sıra").grid(row = 0, column =0,padx = 5, pady = 5)
tk.Label(frame1, text = "Adı Soyadı").grid(row = 0, column =1,padx = 5, pady = 5)
tk.Label(frame1, text = "Nakit/Kart").grid(row = 0, column =2,padx = 5, pady = 5)
tk.Label(frame1, text = "Ödeme Miktarı").grid(row = 0, column =3,padx = 5, pady = 5)
tk.Label(frame1, text = "Not").grid(row = 0, column =4,padx = 5, pady = 5)

tk.Label(tabs1, text = "Sıra").grid(row = 0, column =0,padx = 5, pady = 5)
tk.Label(tabs1, text = "Adı Soyadı").grid(row = 0, column =1,padx = 5, pady = 5)
tk.Label(tabs1, text = "Nakit/Kart").grid(row = 0, column =2,padx = 5, pady = 5)
tk.Label(tabs1, text = "Ödeme Miktarı").grid(row = 0, column =3,padx = 5, pady = 5)
tk.Label(tabs1, text = "Not").grid(row = 0, column =4,padx = 5, pady = 5)

tk.Label(tabs2, text = "Adı Soyadı").grid(row = 0, column =1,padx = 5, pady = 5)
tk.Label(tabs2, text = "Nakit/Kart").grid(row = 0, column =2,padx = 5, pady = 5)
tk.Label(tabs2, text = "Ödeme Miktarı").grid(row = 0, column =3,padx = 5, pady = 5)
tk.Label(tabs2, text = "Not").grid(row = 0, column =4,padx = 5, pady = 5)

tk.Label(tabs3, text = "Adı Soyadı").grid(row = 0, column =1,padx = 5, pady = 5)
tk.Label(tabs3, text = "Nakit/Kart").grid(row = 0, column =2,padx = 5, pady = 5)
tk.Label(tabs3, text = "Ödeme Miktarı").grid(row = 0, column =3,padx = 5, pady = 5)
tk.Label(tabs3, text = "Not").grid(row = 0, column =4,padx = 5, pady = 5)

def buttonFunction():

    # message
#    message_box = messagebox.showinfo(title = "info", message = "information")
#    message_box = messagebox.askretrycancel(title = "info", message = "information")
#    message_box = messagebox.askquestion(title = "info", message = "information")
#    message_box = messagebox.askyesnocancel(title = "info", message = "information")
    message_box = messagebox.showerror(title = "info", message = "information")
    print(message_box)


vt = sqlite3.connect("muhasebe.db")
im = vt.cursor()
sql = """CREATE TABLE IF NOT EXISTS 'Kişisel Muhasebe' 
('Adı Soyadı','Nakit/Kart','Ödeme','Not')"""

def buttonFunction2():
    ad_soyad = input('Deneme')
    odeme = input()
    para = input()
    if para == int():
        int(para)
    else :
        message_box = messagebox.askretrycancel(title = "Yanlış Veri Girişi", message = "Lütfen Sayı Giriniz!")

    not_not = input()

    veri = (ad_soyad,odeme,para,not_not)


    im.execute(sql)
    im.execute("""INSERT INTO 'Kişisel Muhasebe' VALUES 
               (?,?,?,?) """,veri)

    vt.commit()

im.execute("""SELECT * FROM 'Kişisel Muhasebe' """)
veriler = im.fetchall()


x = 1
d= 1
z=1
for veri in veriler:
    str(d)
    tk.Label(frame1,text = d).grid(row = x, column =0,padx = 5, pady = 5)
    a = 1
    for vr in veri:
        tk.Label(frame1, text = vr ).grid(row = x, column =a,padx = 5, pady = 5)
        a += 1
        
    x += 1
    d += 1
    z += 1
    print(veri)
    print(x)

##########################################################

##########################################################

entry = tk.Entry(tabs1,width = 50)
entry.insert(string = "Sıra",index = 0)
entry.grid(row = 1, column =0,padx = 5, pady = 5)

entry = tk.Entry(tabs1,width = 50)
entry.insert(string = "Ad Soyad",index = 0)
entry.grid(row = 1, column =1,padx = 5, pady = 5)

entry = tk.Entry(tabs1,width = 50)
entry.insert(string = "Nakit/Kart",index = 0)
entry.grid(row = 1, column =2,padx = 5, pady = 5)

entry = tk.Entry(tabs1,width = 50)
entry.insert(string = "Ödenen Miktar",index = 0)
entry.grid(row = 1, column =3,padx = 5, pady = 5)
#######################################
###################

# button
button = tk.Button(tabs1, text = "Ara", activebackground = "red",
                   bg = "black", fg = "white", activeforeground = "black",
                   command = buttonFunction)

button.grid(row = 0, column =5,padx = 5, pady = 5)

button2 = tk.Button(tabs2, text = "Ekle", activebackground = "red",
                   bg = "black", fg = "white", activeforeground = "black",
                   command = buttonFunction2 )

button2.grid(row = 0, column =5,padx = 5, pady = 5)

button3 = tk.Button(tabs3, text = " Sil", activebackground = "red",
                   bg = "black", fg = "white", activeforeground = "black",
                   command = buttonFunction)

button3.grid(row = 0, column =5,padx = 5, pady = 5)





window.mainloop()

Bu projeyi çalıştırdığınız zaman db de veri varsa diğer ikinci frame leri göstermiyor eğer ikinci framelerin içine de aynı db verisini koyarsak bu sefer gösteriyor fakat bütün muhasebe framesini aşşağı kaydırıyo gridleri ayarlanmış olmasına rağmen.

bunun dışında scroll u ekleyemiyorum scrollu araştırdım fakat açık konuşmak gerekirse mantığını anlayamadım - ne frame lere eklemeyi nede normal kullanımı

Yardımcı olursanız sevinirim saygılarımla
not : db dosyasını aşşağı bırakıyorum

https://drive.google.com/file/d/184DXlj5RM-CCz28bO0vXwv3yJ6qjfIux/view?usp=sharing

Merhaba,

Programı çalıştırdım ve bir tabloyla karşılaştım. Ancak tabloyu Label widgetlerini kullanarak oluşturmuşsunuz. Bunu pek tavsiye etmiyorum, çünkü tablonuzdaki satır sayısı arttıkça oluşturacağınız Label widgeti de artacaktır. Naçizane tavsiyem, tablo oluşturmak için ttk.Treeview widgetini kullanmanız yönünde.

Ayrıca tk.Frame widgetine scrollbar eklenemez.

Aşağıda paylaştığım kodda treeview widgeti tanımlanıyor, bir inceleyin isterseniz.

root = tk.Tk()

columns = ["A", "B", "C", "D", "E"]

treeview = ttk.Treeview(
    master=root, 
    show="headings", 
    columns=[f"#{i + 1}" for i in range(len(columns))]
)

for index, column in enumerate(columns):
    treeview.column(
        column=f"#{index + 1}",
        minwidth=75,
        width=75,
        anchor="center",
    )
    treeview.heading(
        column=f"#{index + 1}",
        text=column,
    )
    
x_scrollbar = tk.Scrollbar(
    master=root, 
    orient="horizontal", 
    command=treeview.xview
)
y_scrollbar = tk.Scrollbar(
    master=root, 
    orient="vertical", 
    command=treeview.yview
)

treeview.configure(
    yscrollcommand=y_scrollbar.set,
    xscrollcommand=x_scrollbar.set,
)

x_scrollbar.pack(side="bottom", fill="x")
y_scrollbar.pack(side="right", fill="y")
treeview.pack(side="left", expand=True, fill="both")

# Treeview'a temsili olarak değerler ekleyelim.
for i in range(100):
    treeview.insert(parent="", index=i, values=[i for j in columns])

root.mainloop()

teşekkür ederim :smiley: