Tkinter'da Class'da kayıt sayfası

Ben böyle bir kod yazdım tkinter sayfasında butona bastığım zaman açılan yeni tkinter sayfasında
bu bilgiler çıkıyor fakat kutular düzenli bir şekilde çıkarken yanlarında yazan isimler bağımsız bir şekilde çıkıyor ne yapabilirim. Ayrıca bu sayfada iptal butonuna bastığım zaman bütün sayfaları kapatmasını değil de yalnızca bu sayfayı kapatmasını nasıl sağlayabilirim. (Sayfanın görüntüsü en altta)

class musteri_kayit():
    def __init__(self):
        m_kayit=Toplevel()
        m_kayit.geometry("300x400+0+0")
        m_kayit.title("Müşteri Kayıt Sayfası")
        canvas=Canvas(m_kayit)
        canvas.grid()
        cerceve=LabelFrame(canvas)
        cerceve.grid()

        ad_soyad = Label(cerceve, text="Ad Soyad:")
        ad_soyad.grid(row=0, column=0)
        İsim_sisim = Entry(m_kayit)
        İsim_sisim.grid(row=0, column=1, sticky=W)
        tc = Label(cerceve, text="Tc:")
        tc.grid(row=1, column=0)
        Tc = Entry(m_kayit)
        Tc.grid(row=1, column=1, sticky=W)
        d_tarih = Label(cerceve, text="Doğum Tarihi:")
        d_tarih.grid(row=2, column=0)
        dogum_t = Entry(m_kayit)
        dogum_t.grid(row=2, column=1, sticky=W)
        adres = Label(cerceve, text="Adres:")
        adres.grid(row=3, column=0)
        Adres = Entry(m_kayit)
        Adres.grid(row=3, column=1, sticky=W)
        tlf = Label(cerceve, text="Cep Telefonu:")
        tlf.grid(row=4, column=0)
        c_tlf = Entry(m_kayit)
        c_tlf.grid(row=4, column=1, sticky=W)
        meslek = Label(cerceve, text="Meslek:")
        meslek.grid(row=5, column=0)
        Meslek = Entry(m_kayit)
        Meslek.grid(row=5, column=1, sticky=W)
        e_sınıfı = Label(cerceve, text="Ehliyet Sınıfı:")
        e_sınıfı.grid(row=6, column=0)
        E_sınıfı = Entry(m_kayit)
        E_sınıfı.grid(row=6, column=1, sticky=W)
        medeni_h = Label(cerceve, text="Medeni Durumu:")
        medeni_h.grid(row=7, column=0)
        Medeni_h = Entry(m_kayit)
        Medeni_h.grid(row=7, column=1, sticky=W)
        egitim = Label(cerceve, text="Eğitim Durumu:")
        egitim.grid(row=8, column=0)
        Egitim = Entry(m_kayit)
        Egitim.grid(row=8, column=1, sticky=W)
        buton5 = Button(m_kayit, text="Ekle:").grid()
        buton6 = Button(m_kayit, text="iptal", command=exit).grid()

Çünkü oluşturduğunuz Label’ler cerceve olarak tanımladığınız LabelFrame’in içinde. Entry’ler ise oluşturduğunuz arayüzde yani label’ler ile aynı çerçevenin(Frame,LabelFrame, GroupBox,vs…) içinde değil. Bu yüzden label’leri konumlandırırken kullandığınız sayıların aynısını yani aynı koordinatları çerçeve dışında herhangi bir yer için kullanırsanız bahsettiğiniz sorununuz ortaya çıkar. Ya farklı sayılar vermelisiniz, ya da Entry’lerin de cerceve’nin içinde olacak şekilde ayarlayabilirsiniz.

Kendi fikrim; Oluşturulan herhangi bir Frame içine yerleştirdiğiniz item ile arayüzde herhangi bir yere konumlandırdığınız item aynı hizzada olmayabilir. atıyorum Frame’yi x=100, y=50 olarak bir arayüzde konumlandırdınız. Frame nin içinde bir item konumlandıracaksanız bunu aynı koordinat olarak yazmamalısınız. çünkü, o koordinatlar oluşturulan Frame için 0 konumunda…
umarım anlatabilmişimdir…

.destroy() methodunu kullanabilirsiniz
buton6 = Button(m_kayit, text="iptal", command=m_kayit.destroy).grid()

2 Beğeni

Deiğiniz gibi destroy kullandım ve sorun çözüldü. Aynı şekilde m_kayit ve cerceve kısımlarına canvas yazınca istediğim şekilde hizalandılar. Yardımınız için teşekkür ederim :slightly_smiling_face: