Programa yeniden başla butonu ekleme

Herkese merhaba öncelikle. Arkadaşlar aşağıda paylaştığım şekilde bir kod yazdım. Sayı tahmin oyunu. Arayüz oluşturarak derledim. Ancak problem kullanıcı doğru sayıyı bulunca oyunun sona erdiğini belirten “KAYBETTİNİZ” yazısından sonra tekrar başlatmak için bir buton eklemek. Kullanıcının tekrardan programı kapatıp açmasını istemiyorum. Birde belirlemiş olduğum can değişkeni 0 dan sonra eksilere gitmeye devam ediyor. Yardımcı olursanız çok sevinirim. Teşekkür ederim.

import random
from tkinter import*
can = 8
class ugulama_arayuz(Tk):
    def __init__(self):
        super().__init__()
        self.geometry("400x300")
        self.resizable(width=False, height=False)
        self.title("SAYIYI TAHMİN ET")
        self.sayfa_tasarim()
        self.veri_girisi.bind("<Return>", self.oyun)
    def sayfa_tasarim(self):
        self.birinci_sut = Label(text="SAYI TAHMİNİ OYUNUNA HOŞGELDİNİZ.\nSİSTEM SİZİN İÇİN 1 İLA 100 ARASINDA (100) DAHİL BİR SAYI SEÇECEK.\nOYUN İÇİN TOPLAM 8 CANINIZ BULUNMAKTA.\nİYİ ŞANSLAR.\nSAYINIZI YAZDIKTAN SONRA SONUÇ BUTONUNA TIKLAYARAK \nSONUCUNUZU KONRTOL EDİN.")
        self.birinci_sut.place(x=10, y=10)
        self.ilk_satir=Label(text="", bg="black", fg="white" , width=50, height=2)
        self.ilk_satir.place(x=24, y=110)
        self.veri_girisi = Entry(width=35, justify="center",)
        self.veri_girisi.place(x=95, y=170)
        self.veri_girisi.focus()
        self.kontrol_et = Button(text="SONUÇ", width=10, height=3 , command=self.oyun)
        self.kontrol_et.place(x=160, y=200)
        self.kontrol_et2 = Button(text="OYUNU KAPAT", width=15, height=1, command=self.cikis)
        self.kontrol_et2.place(x=142, y=270)
        self.rastgele_sayi = random.randint(1, 101)
    def oyun(self, *args):
        global can
        try:
            if self.veri_girisi.get().isdigit():
                self.sayi = int(self.veri_girisi.get())
            if self.sayi < self.rastgele_sayi:
                can -= 1
                self.ilk_satir.configure(text="YANLIŞ TAHMİN! DAHA BÜYÜK SAYI YAZIN, KALAN CAN = {}".format(can))
            elif self.sayi > self.rastgele_sayi:
                can -= 1
                self.ilk_satir.configure(text="YANLIŞ TAHMİN! DAHA KÜÇÜK SAYI YAZIN, KALAN CAN = {}".format(can))
            else:
                self.ilk_satir.configure(text="TEBRİKLER BULDUNUZ.")
            if can == 0:
                self.ilk_satir.configure(text="KAYBETTİNİZ.")
            self.veri_girisi.selection_range(0, END)
        except:
            self.ilk_satir.configure(text="HATALI DEĞER GİRDİNİZ LÜTFEN SADECE SAYI GİRİN.")
    def cikis(self):
        quit()

ua = ugulama_arayuz()
ua.mainloop()

kod okunmuyor. kodu ctrl+e içinde atabilir misin ?

Şimdi düzenledim, ilk başta bulamamıştım

import random
import tkinter as tk
from tkinter import messagebox

can = 8
class ugulama_arayuz(tk.Tk):
    def __init__(self):
        super().__init__()
        self.geometry("400x300")
        self.resizable(width=False, height=False)
        self.title("SAYIYI TAHMİN ET")
        self.main_frame = tk.Frame(self)
        self.main_frame.pack()
        self.sayfa_tasarim()
        self.veri_girisi.bind("<Return>", self.oyun)

    def sayfa_tasarim(self):
        self.tasarim = tk.Frame(self.main_frame)
        self.tasarim.pack()
        self.birinci_sut = tk.Label(self.tasarim, text="SAYI TAHMİNİ OYUNUNA HOŞGELDİNİZ.\nSİSTEM SİZİN İÇİN 1 İLA 100 ARASINDA (100) DAHİL BİR SAYI SEÇECEK.\nOYUN İÇİN TOPLAM 8 CANINIZ BULUNMAKTA.\nİYİ ŞANSLAR.\nSAYINIZI YAZDIKTAN SONRA SONUÇ BUTONUNA TIKLAYARAK \nSONUCUNUZU KONRTOL EDİN.")
        self.birinci_sut.grid(row=0, column=0)

        self.ilk_satir= tk.Label(self.tasarim, text="", bg="black", fg="white" , width=50, height=2)
        self.ilk_satir.grid(row=1, column=0)
        self.veri_girisi = tk.Entry(self.tasarim, width=35, justify="center",)
        self.veri_girisi.grid(row=2, column=0, pady=10)
        self.veri_girisi.focus()
        self.kontrol_et = tk.Button(self.tasarim, text="SONUÇ", width=10, height=3, command=self.oyun)
        self.kontrol_et.grid(row=3, column=0)
        self.kontrol_et2 = tk.Button(self.tasarim, text="OYUNU KAPAT", width=15, height=1, command=self.cikis)
        self.kontrol_et2.grid(row=4, column=0, pady=10)
        self.rastgele_sayi = random.randint(1, 101)

    def oyun(self):
        global can

        if self.veri_girisi.get().isdigit():
            self.sayi = int(self.veri_girisi.get())
            self.veri_girisi.selection_range(0, tk.END)
        if self.sayi < self.rastgele_sayi:
            can -= 1
            self.ilk_satir.configure(text="YANLIŞ TAHMİN! DAHA BÜYÜK SAYI YAZIN, KALAN CAN = {}".format(can))
        elif self.sayi > self.rastgele_sayi:
            can -= 1
            self.ilk_satir.configure(text="YANLIŞ TAHMİN! DAHA KÜÇÜK SAYI YAZIN, KALAN CAN = {}".format(can))
        else:
            self.ilk_satir.configure(text="TEBRİKLER BULDUNUZ.")
            self.is_ok = messagebox.askyesno(title="Bilgi", message="Yeniden Oynamak İstermisiniz?")

            if self.is_ok == tk.YES:
                self.tasarim.destroy()
                self.sayfa_tasarim()
                self.veri_girisi.delete(0, tk.END)
                can = 8
            elif self.is_ok == tk.NO:
                ua.destroy()

        if can == 0:
            self.ilk_satir.configure(text="KAYBETTİNİZ.")
            self.kontrol_et.config(state=tk.DISABLED)
            self.is_ok2 = messagebox.askyesno(title="Bilgi", message="Yeniden Oynamak İstermisiniz?")
            if self.is_ok2 == tk.YES:
                self.tasarim.destroy()
                self.sayfa_tasarim()
                self.veri_girisi.delete(0, tk.END)
                can = 8
            elif self.is_ok2 == tk.NO:
                ua.destroy()


    def cikis(self):
        quit()

ua = ugulama_arayuz()

ua.mainloop()

Teşekkür ederim elinize sağlık. Kodu denedim çalıştı sadece yes’ e bastıktan sonra tekrar oyun başlıyor ancak enter tuşuna basınca kontrol sağlayamıyorum. Bir de sizden ricam çok kısa özet olarak anlatır mısınız ne yaptığınızla ilgili ve benim nerde hata yaptığımı en azından öğrenmiş olayım.

def oyun(self):

kısmını değiştirip

def oyun(self, event=None):

hem fare ile butona tıklama hem de enter tuşuna basarak oyuna devam edebilirsiniz. Ben genelde place ile nesneleri yerleştirme yapmadığımdan grid e göre yazdım. Frame kullanmamdaki amaçta frameyi sildiğimde içeriğindeki nesnelerde yok oluyor ve tasarımı tekrar yüklemesi kolay. try except blogunu kaldırdım ama tekrardan koda eklemek lazım sayı harici girişlerde denetim eksik şimdi.

teşekkür ederim. kolay gelsin.