Tkinter tablo olusturma


hocam epey uğraştım ama işin içinden çıkamadım sizin zorlanmadan çözümünü bulacağınızı düşünerek size danışmak istedim.
1- resimdeki ok işaretlerinin altındakilerin üstündeki yerlerine taşınmasını istiyorum
python soldaki ilk 3 kolonu satırın devamı gibi algılayıp alt satıra geçiyor galiba
6 sınıda alt alta yada yan yana yazdırabiliyorum ama 3 erli yan yana yada 3 erli alt alta
örnek
o o o ------ o o o
o o o ------ o o o
o o o ------ o o o
veya
o o o ------ o o o ----- o o o
o o o ------ o o o ----- o o o
şekilde yazdıramadım.
2- gri alanın üstündeki gibi bir görüntü alıyorum ancak,gri alanın olduğu gibi bir alan var pencere kenarlığını sola çekip pencereyi küçültünce kırmızı cizgidekigibi bir görünmeyen cizdi sola doğru yazıların üstünü kapatıyor.

Kodunuzu paylaşırsanız belki daha kolay yardımcı olabiliriz

from tkinter import *

def gir():
    try:
        f1 = float(alisfiyat1.get())                        # fiyat1
        a1 = int(adet1.get())                               # adet1
        sf1 = float(suankifiyat1.get())                     # suankifiyat1
        t1 = (f1 * a1)                                      # tutar1
        yd1 = (sf1 - f1) / f1 * int(100)                    # yuzdelik degisim1
        kz1 = (sf1 - f1) * a1                               # karzarar1
        kntrl1["text"] = "Alış Maliyeti: " + str(round(t1, 2))
        kntrl2["text"] = "Yüzdelik Değişim: %: " + str(round(yd1, 2))
        kntrl3["text"] = "Kar/Zarar: " + str(round(kz1, 2))+"\n"


        f2 = float(alisfiyat2.get())                        # fiyat2
        a2 = int(adet2.get())                               # adet2
        sf2 = float(suankifiyat2.get())                     # suankifiyat2
        t2 = (f2 * a2)                                      # tutar2
        yd2 = (sf2 - f2) / f2 * int(100)                    # yuzdelik degisim2
        kz2 = (sf2 - f2) * a2                               # karzarar2
        kntrl4["text"] = "Alış Maliyeti: " + str(round(t2, 2))
        kntrl5["text"] = "Yüzdelik Değişim: %: " + str(round(yd2, 2))
        kntrl6["text"] = "Kar/Zarar: " + str(round(kz2, 2))+"\n"


        of = (t1 + t2) / (a1 + a2)                           # ortalamafiyat
        ta = (a1 + a2)                                       # toplamadet
        tt = (t1 + t2)                                       # toplamtutar
        kntrl7["text"] = "Ortalama Fiyat: " + str(round(of, 2))
        kntrl8["text"] = "Toplam Adet: " + str(ta)
        kntrl9["text"] = "Toplam Maliyet: " + str(round(tt, 2))

    except ValueError:
        kntrl1["text"] = ("Bir Sayı Giriniz")



p = Tk()
p.title("Borsa")
p.geometry("900x700+600+200")
p.config(bg="black")

l1 = Label(p)
l1.config(text="Hisse Alış Fiyatı", bg="black", fg="white",font=("Calibri italic", 12))
l1.pack(padx=50,side=TOP, anchor=NW, fill=Y, expand=NO)
alisfiyat1 = Entry(p)
alisfiyat1.pack(padx=50,side=TOP, anchor=NW, fill=Y, expand=NO)


l2 = Label(p)
l2.config(text="Adet", bg="black", fg="white", font=("Calibri italic", 12))
l2.pack(padx=50,side=TOP, anchor=NW, fill=Y, expand=NO)
adet1 = Entry(p)
adet1.pack(padx=50,side=TOP, anchor=NW, fill=Y, expand=NO)


l3 = Label(p)
l3.config(text="Şuanki Fiyat", bg="black", fg="white", font=("Calibri italic", 12))
l3.pack(padx=50,side=TOP, anchor=NW, fill=Y, expand=NO)
suankifiyat1 = Entry(p)
suankifiyat1.pack(padx=50,side=TOP, anchor=NW, fill=Y, expand=NO)


l4 = Label(p)
l4.config(text="Hisse Alış Fiyatı", bg="black", fg="white",font=("Calibri italic", 12))
l4.pack(padx=400,side=TOP, anchor=NW, fill=Y, expand=NO)
alisfiyat2 = Entry(p)
alisfiyat2.pack(padx=400,side=TOP, anchor=NW, fill=Y, expand=NO)


l5 = Label(p)
l5.config(text="Adet", bg="black", fg="white", font=("Calibri italic", 12))
l5.pack(padx=400,side=TOP, anchor=NW, fill=Y, expand=NO)
adet2 = Entry(p)
adet2.pack(padx=400,side=TOP, anchor=NW, fill=Y, expand=NO)


l6 = Label(p)
l6.config(text="Şuanki Fiyat", bg="black", fg="white", font=("Calibri italic", 12))
l6.pack(padx=400,side=TOP, anchor=NW, fill=Y, expand=NO)
suankifiyat2 = Entry(p)
suankifiyat2.pack(padx=400,side=TOP, anchor=NW, fill=Y, expand=NO)


b1 = Button(p)
b1.config(text="Hesapla", bg="black", fg="white", activebackground="black",
          activeforeground="lime", font=("Calibri italic", 12), command=gir)
b1.pack(padx=250,side=TOP, anchor=W, fill=Y, expand=NO)                                                                                #pady ve padx yazıyla kutu arasındaki mesafeyi ayarlıyor





kntrl1 = Label (p)
kntrl1.config(bg="black", fg="white", font=("calibri",12))
kntrl1.pack(padx=50,side=TOP, anchor=NW, fill=Y, expand=NO)

kntrl2 = Label (p)
kntrl2.config(bg="black", fg="white", font=("calibri",12))
kntrl2.pack(padx=50,side=TOP, anchor=NW, fill=Y, expand=NO)

kntrl3 = Label (p)
kntrl3.config(bg="black", fg="white", font=("calibri",12))
kntrl3.pack(padx=50,side=TOP, anchor=NW, fill=Y, expand=NO)

kntrl4 = Label (p)
kntrl4.config(bg="black", fg="white", font=("calibri",12))
kntrl4.pack(padx=400,side=TOP, anchor=NW, fill=Y, expand=NO)

kntrl5 = Label (p)
kntrl5.config(bg="black", fg="white", font=("calibri",12))
kntrl5.pack(padx=400,side=TOP, anchor=NW, fill=Y, expand=NO)

kntrl6 = Label (p)
kntrl6.config(bg="black", fg="white", font=("calibri",12))
kntrl6.pack(padx=400,side=TOP, anchor=NW, fill=Y, expand=NO)

kntrl7 = Label (p)
kntrl7.config(bg="black", fg="white", font=("calibri",12))
kntrl7.pack(padx=250,side=TOP, anchor=NW, fill=Y, expand=NO)

kntrl8 = Label (p)
kntrl8.config(bg="black", fg="white", font=("calibri",12))
kntrl8.pack(padx=250,side=TOP, anchor=NW, fill=Y, expand=NO)

kntrl9 = Label (p)
kntrl9.config(bg="black", fg="white", font=("calibri",12))
kntrl9.pack(padx=250,side=TOP, anchor=NW, fill=Y, expand=NO)

mainloop()
l1 = Label(p)
l1.config(text="Hisse Alış Fiyatı", bg="black", fg="white",font=("Calibri italic", 12))
l1.pack(padx=50,side=TOP, anchor=NW, fill=Y, expand=NO)
alisfiyat1 = Entry(p)
alisfiyat1.pack(padx=50,side=TOP, anchor=NW, fill=Y, expand=NO)

pack satırındakileri şablon olarak aldım tam anlamıyla hangisi ne işe yarıyor bilmiyorum orada eksik yada fazla kod olabilir. ayrıca
Label(master, text=“First”).grid(row=0)
Label(master, text=“Second”).grid(row=1)

e1 = Entry(master)
e2 = Entry(master)

e1.grid(row=0, column=1)
e2.grid(row=1, column=1)

bu koddaki .grid() kısmını benim yazdığıma uyarlamaya calıştım onuda yapamadım.

Bunu pack kullanarak yapamazsınız. Grid kullanarak yapacaksınız. Grid tablo oluşturmaya yarar. Mesela ilk satır ilk sütuna koyacağınız bir araç için pack yerine şunu yazın.
grid(rows=0,column=0)
4.satır 7.sütun için grid(rows=3,column=6)
yazın. Boyutlarını kendisi ayarlar.
Ayrıca sola çektikçe küçülme sorunu da ortadan kalkar.

from tkinter import *

def gir():
    try:
        f1 = float(alisfiyat1.get())                        # fiyat1
        a1 = int(adet1.get())                               # adet1
        sf1 = float(suankifiyat1.get())                     # suankifiyat1
        t1 = (f1 * a1)                                      # tutar1
        yd1 = (sf1 - f1) / f1 * int(100)                    # yuzdelik degisim1
        kz1 = (sf1 - f1) * a1                               # karzarar1
        kntrl1["text"] = "Alış Maliyeti: " + str(round(t1, 2))
        kntrl2["text"] = "Yüzdelik Değişim: %: " + str(round(yd1, 2))
        kntrl3["text"] = "Kar/Zarar: " + str(round(kz1, 2))+"\n"


        f2 = float(alisfiyat2.get())                        # fiyat2
        a2 = int(adet2.get())                               # adet2
        sf2 = float(suankifiyat2.get())                     # suankifiyat2
        t2 = (f2 * a2)                                      # tutar2
        yd2 = (sf2 - f2) / f2 * int(100)                    # yuzdelik degisim2
        kz2 = (sf2 - f2) * a2                               # karzarar2
        kntrl4["text"] = "Alış Maliyeti: " + str(round(t2, 2))
        kntrl5["text"] = "Yüzdelik Değişim: %: " + str(round(yd2, 2))
        kntrl6["text"] = "Kar/Zarar: " + str(round(kz2, 2))+"\n"


        of = (t1 + t2) / (a1 + a2)                           # ortalamafiyat
        ta = (a1 + a2)                                       # toplamadet
        tt = (t1 + t2)                                       # toplamtutar
        kntrl7["text"] = "Ortalama Fiyat: " + str(round(of, 2))
        kntrl8["text"] = "Toplam Adet: " + str(ta)
        kntrl9["text"] = "Toplam Maliyet: " + str(round(tt, 2))

    except ValueError:
        kntrl1["text"] = ("Bir Sayı Giriniz")



p = Tk()
p.title("Borsa")
p.geometry("590x700+600+200")
p.config(bg="black")

l1 = Label(p)
l1.config(text="Hisse Alış Fiyatı", bg="black", fg="white",font=("Calibri italic", 12))
l1.grid(rows=1,column=0)
alisfiyat1 = Entry(p)
alisfiyat1.grid(rows=1,column=0)


l2 = Label(p)
l2.config(text="Adet", bg="black", fg="white", font=("Calibri italic", 12))
l2.grid(rows=2,column=0)
adet1 = Entry(p)
adet1.grid(rows=2,column=0)


l3 = Label(p)
l3.config(text="Şuanki Fiyat", bg="black", fg="white", font=("Calibri italic", 12))
l3.grid(rows=3,column=0)
suankifiyat1 = Entry(p)
suankifiyat1.grid(rows=3,column=0)


l4 = Label(p)
l4.config(text="Hisse Alış Fiyatı", bg="black", fg="white",font=("Calibri italic", 12))
l4.grid(rows=1,column=2)
alisfiyat2 = Entry(p)
alisfiyat2.grid(rows=1,column=2)


l5 = Label(p)
l5.config(text="Adet", bg="black", fg="white", font=("Calibri italic", 12))
l5.grid(rows=2,column=2)
adet2 = Entry(p)
adet2.grid(rows=2,column=2)


l6 = Label(p)
l6.config(text="Şuanki Fiyat", bg="black", fg="white", font=("Calibri italic", 12))
l6.grid(rows=3,column=2)
suankifiyat2 = Entry(p)
suankifiyat2.grid(rows=3,column=2)


b1 = Button(p)
b1.config(text="Hesapla", bg="black", fg="white", activebackground="black",
          activeforeground="lime", font=("Calibri italic", 12), command=gir)
b1.grid(rows=4,column=1)                                                                              #pady ve padx yazıyla kutu arasındaki mesafeyi ayarlıyor





kntrl1 = Label (p)
kntrl1.config(bg="black", fg="white", font=("calibri",12))
kntrl1.grid(rows=4,column=0)

kntrl2 = Label (p)
kntrl2.config(bg="black", fg="white", font=("calibri",12))
kntrl2.grid(rows=5,column=0)

kntrl3 = Label (p)
kntrl3.config(bg="black", fg="white", font=("calibri",12))
kntrl3.grid(rows=6,column=0)

kntrl4 = Label (p)
kntrl4.config(bg="black", fg="white", font=("calibri",12))
kntrl4.grid(rows=5,column=2)

kntrl5 = Label (p)
kntrl5.config(bg="black", fg="white", font=("calibri",12))
kntrl5.grid(rows=6,column=2)

kntrl6 = Label (p)
kntrl6.config(bg="black", fg="white", font=("calibri",12))
kntrl6.grid(rows=7,column=2)

kntrl7 = Label (p)
kntrl7.config(bg="black", fg="white", font=("calibri",12))
kntrl7.grid(rows=8,column=1)

kntrl8 = Label (p)
kntrl8.config(bg="black", fg="white", font=("calibri",12))
kntrl8.grid(rows=9,column=1)

kntrl9 = Label (p)
kntrl9.config(bg="black", fg="white", font=("calibri",12))
kntrl9.grid(rows=10,column=1)

mainloop()

anladığım kadarıyla bu şekilde diyorsunuz,
grid(rows=0,column=0) row sıfırdan başlamıyor hata veriyor.
row=1 column=0 şeklinde başlangıcı belirleyince çalışıyor hata vermiyor.
siyah alan sorunu düzeldi, ama hala sütunlar yukarı taşınmadı.

hocam sorun row ve rows muş.
0 0 dan başlamama sebebide s harfiymiş :slight_smile:
hesaplaya basınca pencere boyutu aynı kalarak cıktılar pencerenin dışına taşıyordu
onu önlemek içinde padx=40 ı kullandım.

Teşekkür Ederim…

from tkinter import *

def gir():
    try:
        f1 = float(alisfiyat1.get())                        # fiyat1
        a1 = int(adet1.get())                               # adet1
        sf1 = float(suankifiyat1.get())                     # suankifiyat1
        t1 = (f1 * a1)                                      # tutar1
        yd1 = (sf1 - f1) / f1 * int(100)                    # yuzdelik degisim1
        kz1 = (sf1 - f1) * a1                               # karzarar1
        kntrl1["text"] = "Alış Maliyeti: " + str(round(t1, 2))
        kntrl2["text"] = "Yüzdelik Değişim: %: " + str(round(yd1, 2))
        kntrl3["text"] = "Kar/Zarar: " + str(round(kz1, 2))+"\n"


        f2 = float(alisfiyat2.get())                        # fiyat2
        a2 = int(adet2.get())                               # adet2
        sf2 = float(suankifiyat2.get())                     # suankifiyat2
        t2 = (f2 * a2)                                      # tutar2
        yd2 = (sf2 - f2) / f2 * int(100)                    # yuzdelik degisim2
        kz2 = (sf2 - f2) * a2                               # karzarar2
        kntrl4["text"] = "Alış Maliyeti: " + str(round(t2, 2))
        kntrl5["text"] = "Yüzdelik Değişim: %: " + str(round(yd2, 2))
        kntrl6["text"] = "Kar/Zarar: " + str(round(kz2, 2))+"\n"


        of = (t1 + t2) / (a1 + a2)                           # ortalamafiyat
        ta = (a1 + a2)                                       # toplamadet
        tt = (t1 + t2)                                       # toplamtutar
        okz =(sf2 * ta)  - (tt)                               #!!ortalamakar/zarar !!!
        oyd = (sf2 - of) / of * int(100)                     # ortalama yuzdelik degisim!!!!
        kntrl7["text"] = "Toplam Maliyet: " + str(round(tt, 3))
        kntrl8["text"] = "Ort Yüzdelik Değişim: %: " + str(round(oyd, 2))
        kntrl9["text"] = "Ortalama Kar/Zarar: " + str(round(okz, 3))  # !!!!!
        kntrl10["text"] = "Toplam Adet: " + str(ta)
        kntrl11["text"] = "Ortalama Fiyat: " + str(round(of, 3))

    except ValueError:
        kntrl1["text"] = ("Bir Sayı Giriniz")



p = Tk()
p.title("Borsa")
p.geometry("730x450+600+200")
p.config(bg="black")

l1 = Label(p)
l1.config(text="Hisse Alış Fiyatı", bg="black", fg="white",font=("Calibri italic", 12))
l1.grid(row=0,column=0, padx=40)
alisfiyat1 = Entry(p)
alisfiyat1.grid(row=1,column=0, padx=40)


l2 = Label(p)
l2.config(text="Adet", bg="black", fg="white", font=("Calibri italic", 12))
l2.grid(row=2,column=0, padx=40)
adet1 = Entry(p)
adet1.grid(row=3,column=0, padx=40)


l3 = Label(p)
l3.config(text="Şuanki Fiyat", bg="black", fg="white", font=("Calibri italic", 12))
l3.grid(row=4,column=0, padx=40)
suankifiyat1 = Entry(p)
suankifiyat1.grid(row=5,column=0, padx=40)


l4 = Label(p)
l4.config(text="Hisse Alış Fiyatı", bg="black", fg="white",font=("Calibri italic", 12))
l4.grid(row=0,column=2, padx=40)
alisfiyat2 = Entry(p)
alisfiyat2.grid(row=1,column=2, padx=40)


l5 = Label(p)
l5.config(text="Adet", bg="black", fg="white", font=("Calibri italic", 12))
l5.grid(row=2,column=2, padx=40)
adet2 = Entry(p)
adet2.grid(row=3,column=2, padx=40)


l6 = Label(p)
l6.config(text="Şuanki Fiyat", bg="black", fg="white", font=("Calibri italic", 12))
l6.grid(row=4,column=2, padx=40)
suankifiyat2 = Entry(p)
suankifiyat2.grid(row=5,column=2, padx=40)


b1 = Button(p)
b1.config(text="Hesapla", bg="black", fg="white", activebackground="black",
          activeforeground="lime", font=("Calibri italic", 12), command=gir)
b1.grid(row=4,column=1, padx=80)                                                                              #pady ve padx yazıyla kutu arasındaki mesafeyi ayarlıyor





kntrl1 = Label (p)
kntrl1.config(bg="black", fg="white", font=("calibri",12))
kntrl1.grid(row=6,column=0)

kntrl2 = Label (p)
kntrl2.config(bg="black", fg="white", font=("calibri",12))
kntrl2.grid(row=7,column=0)

kntrl3 = Label (p)
kntrl3.config(bg="black", fg="white", font=("calibri",12))
kntrl3.grid(row=8,column=0)

kntrl4 = Label (p)
kntrl4.config(bg="black", fg="white", font=("calibri",12))
kntrl4.grid(row=6,column=2)

kntrl5 = Label (p)
kntrl5.config(bg="black", fg="white", font=("calibri",12))
kntrl5.grid(row=7,column=2)

kntrl6 = Label (p)
kntrl6.config(bg="black", fg="white", font=("calibri",12))
kntrl6.grid(row=8,column=2)

kntrl7 = Label (p)
kntrl7.config(bg="black", fg="white", font=("calibri",12))
kntrl7.grid(row=9,column=1)

kntrl8 = Label (p)
kntrl8.config(bg="black", fg="white", font=("calibri",12))
kntrl8.grid(row=10,column=1)

kntrl9 = Label (p)
kntrl9.config(bg="black", fg="white", font=("calibri",12))
kntrl9.grid(row=11,column=1)

kntrl10 = Label (p)             #!!!!!
kntrl10.config(bg="black", fg="white", font=("calibri",12))  #!!!!!
kntrl10.grid(row=12,column=1)  #!!!!

kntrl11 = Label (p)             #!!!!!
kntrl11.config(bg="black", fg="white", font=("calibri",12))  #!!!!!
kntrl11.grid(row=13,column=1)  #!!!!,sticky=w yazıyı sola yaslıyor


mainloop()