Kodum Çalışmıyor

Aşağıda yazdığım bu kodlarla pencerede 3 tane buton olmasını istedim ve bu butonlarda şekiller olmasını istedim bu butonlara bastığımızda o şekilin kenar sayısına göre entry olmasını ve bu entryleri kullanarak hacimini alanını ve çevresini hesaplamasını istedim fakat üstteki butonlardan birine bastıktan sonra diğerine bastığımda entryler ve labellar üst üste biniyordu bu yüzden bu labellerı ve entryleri silmesi için bir buton ekledim ama bu butona bastığımda sonuçalara atadığım labelı silmiyor acaba yardım edecek var mı?

import tkinter as tk

root = tk.Tk()
root.title("GMAŞBBBAÇH")
root.geometry("1000x500")


def ucgen():
    ucgenk1 = tk.Label(text="İlk Kenar:", font="Times 20")
    ucgenk1.place(x=30, y=200)
    ucgenk1e = tk.Entry(width="40")
    ucgenk1e.place(x=147, y=210)

    ucgenk2 = tk.Label(text="İkinci Kenar:", font="Times 20")
    ucgenk2.place(x=30, y=250)
    ucgenk2e = tk.Entry(width="35")
    ucgenk2e.place(x=180, y=260)

    ucgenk3 = tk.Label(text="Üçüncü Kenar:", font="Times 20")
    ucgenk3.place(x=30, y=300)
    ucgenk3e = tk.Entry(width="32")
    ucgenk3e.place(x=200, y=310)

    ucgenu = tk.Label(text="Uzunluk:", font="Times 20")
    ucgenu.place(x=30, y=350)
    ucgenue = tk.Entry(width="40")
    ucgenue.place(x=150, y=360)




    def butuc():
        uk1 = ucgenk1e.get()
        uk2 = ucgenk2e.get()
        uk3 = ucgenk3e.get()
        uzz = ucgenue.get()
        cevreu = (int(uk1) + int(uk2) + int(uk3))
        cevreul = tk.Label(text=("Çevre", cevreu), font="Times 20")
        cevreul.place(x=500, y=250)

        alanu = (int(uk3)*int(uzz))
        alanul = tk.Label(text=("Alan",alanu), font="Times 20")
        alanul.place(x=500,y=300)

    def delet():
        ucgenk1.destroy()
        ucgenk1e.destroy()
        ucgenk2.destroy()
        ucgenk2e.destroy()
        ucgenk3.destroy()
        ucgenk3e.destroy()
        ucgenu.destroy()
        ucgenue.destroy()
        cevreul.destroy()
        alanul.destroy()





    butu = tk.Button(text="Hesapla", font="Times 30", command=butuc)
    butu.place(x=30, y=400)
    butsu = tk.Button(text="Sil Knk", font="Times 30", command=delet)
    butsu.place(x=200, y=400)



#-----------------------------------------------------------------------------------------------------------------------------------------------------------------#
def kare():


    karek = tk.Label(text="Kenar:", font="Times 20")
    karek.place(x=30, y=200)
    kareke = tk.Entry(width="40")
    kareke.place(x=147, y=210)

    kareu = tk.Label(text="Uzunluk:", font="Times 20")
    kareu.place(x=30, y=250)
    kareue = tk.Entry(width="40")
    kareue.place(x=150, y=260)

    def butuk():
        kk = kareke.get()
        ku = kareue.get()
        cevrek = (4*(int(kk)))
        cevrekl = tk.Label(text=("Çevre", cevrek), font="Times 20")
        cevrekl.place(x=500, y=200)

        alank = (int(kk)*int(kk))
        alankl = tk.Label(text=("Alan",alank), font="Times 20")
        alankl.place(x=500,y=250)

        hacimk = (int(kk)*int(kk)*int(ku))
        hacimkl = tk.Label(text=("Hacim",hacimk), font="Times 20")
        hacimkl.place(x=500,y=300)

    butk = tk.Button(text="Hesapla", font="Times 30", command=butuk)
    butk.place(x=30, y=400)
    butsk = tk.Button(text="Sil Knk", font="Times 30", command=delet)
    butsk.place(x=200, y=400)

#-----------------------------------------------------------------------------------------------------------------------------------------------------------------#
def dikdort():

    dikdortku = tk.Label(text="Uzun Kenar:", font="Times 20")
    dikdortku.place(x=30, y=200)

    dikdortkk = tk.Label(text="Kısa Kenar:", font="Times 20")
    dikdortkk.place(x=30, y=250)

    dikdortue = tk.Entry(width="40")
    dikdortue.place(x=175, y=212)

    dikdortke = tk.Entry(width="41")
    dikdortke.place(x=167, y=262)

    dikdortu = tk.Label(text="Uzunluk:", font="Times 20")
    dikdortu.place(x=30, y=300)

    dikdortue = tk.Entry(width="45")
    dikdortue.place(x=145, y=311)

    def butud():
        diku = dikdortue.get()
        dikk = dikdortke.get()
        dikuk = dikdortue.get()
        cevred = (2*(int(diku)+int(dikk)))
        cevredl = tk.Label(text=("Çevre", cevred), font="Times 20")
        cevredl.place(x=500, y=200)

        aland = (int(diku)*int(dikk))
        alandl = tk.Label(text=("Alan",aland), font="Times 20")
        alandl.place(x=500,y=250)

        hacimd = (int(diku)*int(dikk)*int(dikuk))
        hacimdl = tk.Label(text=("Hacim",hacimd), font="Times 20")
        hacimdl.place(x=500,y=300)

    butd = tk.Button(text="Hesapla", font="Times 30", command=butud)
    butd.place(x=30, y=400)
    butsd = tk.Button(text="Sil Knk", font="Times 30", command=delet)
    butsd.place(x=200, y=400)
#------------------------------------------------------------------------------------------------------------------------------------#
sekilsec = tk.Label(text="Hangi Şekli Hesaplamak İstediğinizi Seçiniz", font="Times 20")
sekilsec.pack()

bu = tk.Button(text="Üçgen", width="20", anchor=tk.CENTER, command=ucgen)
bk = tk.Button(text="Kare", width="20", anchor=tk.CENTER,command=kare)
bd = tk.Button(text="Dikdörtgen", width="20", anchor=tk.CENTER,command=dikdort)
bu.place(x=30, y=60)
bk.place(x=190, y=60)
bd.place(x=350, y=60)

root.mainloop()

Kodun ve çalışmıyorsa, başkasını deneyeceksin.

1 Beğeni

Bu konu için şöyle yardımcı olayım. Örnek video Switch Pages in Tkinter | Switch Frames in Tkinter | Switch Multiple Pages in Tkinter - YouTube videoyu izleyerek aynı kodları yaz., aynı şekilde çalıştırmaya bak. İlk başlarda kendi konunla alakası olmadığını düşünebilirsin ama vazgeçme. Orada önemli olan frame oluşturma frameler arası geçiş. Daha sonra kendi koduna göre uyarlama yaparsın. Ben kodunuzu çalıştırdım ama label ve entry hizalamalarını yapamamışsınız.

Calismamasinin sebebi delet fonksiyonunun gorunur olmamasi. Onun da sebebi fonksiyonun ucgen fonksiyonunun icinde olmasi.

Ama disari cikartmak da yetmez, delet'in silecegi elemanlara (degiskenlere) erisebilmesi lazim. Genel bir veri akisi / veri tutma sorunu var gibi. Bahsedilen (veya baska) vidyo veya yazilarda tavsiye edilenler denenebilir. Frame’in icindeki her elemani tutsun diye bir class tasarlanabilir. Simdilik butun degiskenler global de yapilabilir.

Ben kodumu çalıştırdığımda label ile entryler hizalı gözüküyor yanlış koplayalamış olabilir misiniz?

ucgenk1 = tk.Label(text="İlk Kenar:", font="Times 20")
    ucgenk1.place(x=30, y=200)
    ucgenk1e = tk.Entry(width="40")
    ucgenk1e.place(x=147, y=210)

    ucgenk2 = tk.Label(text="İkinci Kenar:", font="Times 20")
    ucgenk2.place(x=30, y=250)
    ucgenk2e = tk.Entry(width="35")
    ucgenk2e.place(x=180, y=260)

    ucgenk3 = tk.Label(text="Üçüncü Kenar:", font="Times 20")
    ucgenk3.place(x=30, y=300)
    ucgenk3e = tk.Entry(width="32")
    ucgenk3e.place(x=200, y=310)

entry place x leri aynı değerlerle başlamıyor

def butuc(): fonkisiyon içerisine
global cevreul
global alanul

olarak denersen sorununa çözüm bulabilirsin