Tkinter sayfalar hakkında

Merhaba ben tkinterda yazdığım bir programda birden fazla sayfa var ancak her seferinde yeni bir pencere açıp karıştırmak istemiyorum.Bu yüzden bazı yollar denedim her seferinde sayfayı temizleyip yeniden yazdırmak bile denedim ancak sıkıntı çıkardı sonradan ilk sayfada bulunan 2 adet butonu bir def komutuna bağladım ve bir butona tıklayınca girdiğimiz sayfaya da komut olarak önceki ekranı kapamasını söyledim sonradan geri dön butonu yardımı ile eski sayfaya dönmeye çalışınca ingilizce olarak "button" komutunu çağıramıyor: uygulama imha edildi
adlı bir hata alıyorum bunu nasıl çözerim (başka önerilere de açığım)

Kodunuzu paylaşırmısınız

import tkinter as tk
from tkinter import messagebox
from tkinter.ttk import Combobox

form=tk.Tk()
form.title("Kan Bağışı")
form.geometry("500x450+420+150")


#LİSTELER#
yaş_liste=("1","2","3","4","5","6","7","8","9","10")
kangrup_liste=("A+","A-","B+","B-","AB+","AB-","0+","0-")
il_liste=("Ankara", "İstanbul")
kullanıcısözleşme_liste=("Buraya daha sonra eklenecek")
hata_mesajları=("Eksik veya az bilgi girdiniz lütfen kontrol ediniz")



#kayıtkısmı#
def kayıtol():
form3=tk.Tk()
form3.title("Kayıt ol")
form3.geometry("500x450+420+150")
etiket=tk.Label(form3,text="Kayıt olmak için bilgilerinizi eksiksiz olarak 
yazınız",fg="Black",bg="white")
etiket.place(relx=200,rely=200)
etiket.pack()


#İSİM SOYİSİM#
kullanıcıismi=tk.Label(form3,text="İsminiz ve Soyisminiz:").pack()
isim=tk.Entry(form3,fg="Black").pack()


#YAŞ#
etiket2=tk.Label(form3,text="Lütfen yaşınızı seçiniz").pack()
yaşkutu=Combobox(form3,values=(yaş_liste)).pack()


#Kan grubu#
kullanıcıkan=tk.Label(form3,text="Lütfen kan grubunuzu seçiniz").pack()
kan=Combobox(form3,values=(kangrup_liste)).pack()


#İller#
il_seçimi_metin=tk.Label(form3,text="Lütfen İlinizi Seçiniz:").pack()
ilseçimi=variable_1 = tk.StringVar()
variable_1.set("İl Seçin")
values_1 = (il_liste)
combobox_1 = Combobox(
    master=form3,
    textvariable=variable_1,
    values=values_1,
)
combobox_1.pack()
#ilçeler#
ilçe_seçimi_metin = tk.Label(form3, text="Lütfen İlçenizi Seçiniz").pack()
variable_2 = tk.StringVar()
variable_2.set("İlçe Seçin")
values_2 = {
    "Ankara": ["Mamak", "Çankaya"],
    "İstanbul": ["Kadıköy", "Adalar"]}
combobox_2 = Combobox(
    master=form3,
    textvariable=variable_2,
    values=values_2["Ankara"]
)
combobox_2.pack()

def change():
    if combobox_1.get() == "Ankara":
        combobox_2.configure(values=values_2["Ankara"])
    elif combobox_1.get() == "İstanbul":
        combobox_2.configure(values=values_2["İstanbul"])

combobox_1.bind("<<ComboboxSelected>>", lambda event: change())

#iletişim bilgileri#
etiket4=tk.Label(form3,text="Lütfen size ulaşabileceğimiz bir telefon numarası giriniz.Size 
bu numaradan ulaşacağız.").pack()
iletişim=tk.Entry(form3,fg="black").pack()

#İkamet#
etiket6=tk.Label(form3,text="Hastahane seçimi için tıklayın").pack()
ikamet=tk.Button(form3,text="Seç",command=yer).pack()

#Sözleşme#
sözleşmebuton = tk.Button(form3, text="Kullanıcı sözleşmesi", 
command=kullanıcısözleşmesi).pack()
onaylama = tk.Button(form3, text='Onayla ve Kayıt Ol')

#İkamet kısmı#
def yer():
form2 = tk.Tk()
form2.title("Hastahane seçimi")
etiket5=tk.Label(form2,text="""Lütfen yarım saatten kısa sürede gidebileceğiniz Hastahaneleri seçiniz
                               (Lütfen dikkat!!Bazı hastahaneler bulunumuyor en yakın zamanda 
eklenecek)
                               Birden fazla seçim yapabilirsiniz""").pack()
gideceğihastahane=tk.Checkbutton(form2,text="Bahçeşehir şehir hastahanesi").pack()
gideceğihastahane2=tk.Checkbutton(form2, text="Beylikdüzü Devlet Hastahanesi").pack()
hastahanebuton=tk.Button(form2,text="Onayla").pack()


###hastahane giriş###
def hastahane_giriş_yapma():
form2=tk.Tk()
form2.title("Hastahane giriş")
form2.geometry("500x450+450+100")
messagebox.showinfo(title="Dikkat!!",message="Hastahane kayıt işlemi sadece tarafımıza 
ulaşarak yapılır.Bize ulaşmak için yusuftahabudak01@gmail.com")
hastahaneismi = tk.Label(form2, text="Hastahane ismi:").pack()
hastahaneismientry=tk.Entry(form2,fg="black").pack()
hastahaneşifre=tk.Label(form2,text="Hastahane şifresi:").pack()
hastahaneşifreentry=tk.Entry(form2,fg="black").pack()

def kullanıcısözleşmesi():
messagebox.askyesno(title="Kullanıcı sözleşmesi",message=kullanıcısözleşme_liste)

###kaneksik###
def kaneksik():
form4=tk.Tk()
form4.title("ACİL KAN İSTEYEN YERLER")
form4.geometry("500x450+420+150")
form4=messagebox.showinfo(title="Dikkat!!",message="Bu kısımda tüm heryerdeki acil 
kan ihtiyaçları listelenir eğer sadece yakınınızdaki kan arayan yerleri istiyorsanız 
bildirimlerinizi kontol ediniz")

###kandeposu###
def kandepo():
pass


#####VERİTABANI#####



###başlangıç komutları###
def başlangıç_öğe():
form=tk.Tk()
kayıtolbuton=tk.Button(form,text="Kayıt ol",command=kayıtol).pack()
hastahanegiriş=tk.Button(form,text="Hastahane 
girişi",command=hastahane_giriş_yapma).pack()







kayıtolbuton=tk.Button(form,text="Kayıt ol",command=kayıtol).pack()
hastahanegiriş=tk.Button(form,text="Hastahane 
girişi",command=hastahane_giriş_yapma).pack()
kaneksikleri=tk.Button(form,text="Acil kan arayan yerler",command=kaneksik).pack()
kandeposu=tk.Button(form,text="Kan deposu",command=kandepo).pack()












form.mainloop()

Kodlarda hala eksikler var ayrıca bende düzgün ancak burada paylaşınca nedense girintiler bozuluyor haberiniz olsun

destroy() kullanmayı denedinizmi ?

import tkinter as tk

def call():
    pencere.destroy()
    root = tk.Tk()
    root.geometry("300x300")
    root.title("yeni pencere")
    
    lamel = tk.Label(root,text="hello world")
    lamel.pack()
    
    root.mainloop()

pencere = tk.Tk()
pencere.title("wormer")
pencere.resizable(False,False)
pencere.geometry("300x300")

buton = tk.Button(pencere,text="tıkla",command=call)
buton.pack()

worm = tk.Button(pencere,text="buda 2")
worm.pack()


pencere.mainloop()

Sanırım kendimi doğru ifade edemedim bir tuşa basıp ana sayfaya dönmek istiyorum kısacası ancak sizin yazdığınız program istediğim şekilde çalışmıyor ilk butonunuz sayfayı açıyor ve hello world geliyor ancak önceki sayfaya dönmem için tuş yok kendim ekledim ve küçük değişiklikler yaparak denedim ve yine olmadı belki ekleme şeklim hatalıdır kodu yolluyorum şimdi

 import tkinter as tk
öğe()
def call():
pencere.destroy()
root = tk.Tk()
root.geometry("300x300")
root.title("yeni pencere")
buttoncuk=tk.Button(root,text="tıkla").pack()
lamel = tk.Label(root,text="hello world")
lamel.pack()

root.mainloop()

def öğe():
pencere = tk.Tk()
pencere.title("wormer")
pencere.resizable(False,False)
pencere.geometry("300x300")
buton = tk.Button(pencere,text="tıkla",command=call)
buton.pack()
worm = tk.Button(pencere,text="buda 2")
worm.pack()
pencere.mainloop()

Sorun sadece geri dönme tuşumu ?

Evet geri dönme tuşu hata veriyor başka sorunum yok şu anda önceki sayfayı kapattığım için imha edildi hatası alıyorum

Şunu yaptım

import tkinter as tk

def program():
    def buda2():
        pencere.destroy()
        yeni = tk.Tk()
        yeni.geometry("300x300")
        
        back = tk.Button(yeni,text="back to screen",command=program)
        back.pack()
       
        
        yeni.mainloop()
    
    def call():
        pencere.destroy()
        root = tk.Tk()
        root.geometry("300x300")
        root.title("yeni pencere")
        
        lamel = tk.Label(root,text="hello world")
        lamel.pack()
        
        root.mainloop()
    
    pencere = tk.Tk()
    pencere.title("wormer")
    pencere.resizable(False,False)
    pencere.geometry("300x300")
    
    buton = tk.Button(pencere,text="tıkla",command=call)
    buton.pack()
    
    worm = tk.Button(pencere,text="buda 2",command=buda2)
    worm.pack()
    
    
    pencere.mainloop()

program()

Sizin koyduğunuz buda2 tuşuna basınca açılan yere bir ana ekrana dönme tuşu koymak istiyorum yani buda 2 ye tıkladım ve açılan sayfadan geri dön tuşu koyup geri döndüm ben bunu istiyorum ancak sizin yazdığınız kod direk programı kapatıyor

Peki başka bir yol yokmu yani ekranı silmeye gerek olmadan yeni pencere açılmadan bir yol yokmu?

İsterseniz ekrana yerleştiren pack() ve place() leri silebilirsiniz

Kodu mesaja eklerken bir hata yapıyor olabilirsiniz, buraya tekrar bakın istiyorsanız:

Bakacağım acaba siz soruma yardımcı olabilirmisiniz çözemedik maalesef tek bir pencerede işlem yapmak istiyorum önce butonlar kayıp olacak sonrasında yeniden istediğim şekilde düzenlenecek

@yusuftahabudak ekrana yerleştirme biçimine göre pack_forget() ya da grid_forget() kullanabilirsin

import tkinter as tk

pecere = tk.Tk()
pencere.title("deneme")
pencere.geometry("300x300")
def uygulama():
	def clear():
		buton1.pack_forget()
		buton2 = tk.Button(text="geri dön",command=uygulama)
		buton2.pack()
	buton1 = tk.Button(text="ekranı temizle",command=clear)
	buton1.pack()


uygulama()
pencere.mainloop()

1 Beğeni