Python Tkinter'da program bitince nasıl geri başlatılır?

404353

Decapat
Katılım
24 Aralık 2020
Mesajlar
869
Makaleler
2
Çözümler
1
Merhabalar, bir sayı oyunu geliştiriyorum kullanıcı bir yerde oyunu kazanıyor fakat oyunu kazanınca yeniden başlat düğmesine tıklayınca program yeniden başlamıyor bunu nasıl yapabileceğimi hiç anlamadım yardımcı olur musunuz? (Daha küçük bir sayı girin kısmına bilgisayarın seçtiği sayıyı yazdım geliştirilme aşamasının rahat geçmesi için)

import random
from tkinter import *


pencere = Tk()
cevap = random.randint(1,100)

def yeniden_baslat():
pencere.destroy()


def cevap_tahmin ():
global tahmin
tahmin = int(cevapkutusu.get())
cevapkutusu.delete(0,END)

if tahmin > cevap:
etiket = Label(text="Daha küçük bir sayı gir ! {}".format(cevap))
etiket.pack()
elif tahmin < cevap:
etiket = Label(text="Daha büyük bir sayı gir !")
etiket.pack()
else:
etiket = Label(text="Oyunu kazandın !")
etiket.pack()
yenidenbaslat = Button(text="Yeniden Başlat",command=yeniden_baslat)
yenidenbaslat.pack()




baslik = pencere.title("Sayı Tahmin Oyunu")
boyut = pencere.geometry("1920x1080")


cevapkutusu = Entry()
cevapkutusu.pack()
gonderbuton = Button(text="Gönder",command=cevap_tahmin)
gonderbuton.pack()

mainloop()


1 gündür bunla uğraşıyorum ChatGPT bile doğru düzgün yanıt veremedi saçmalıyor size soruyorum yardımcı olur musunuz?
 
Son düzenleyen: Moderatör:
Lütfen kod paylaşırken alıntı vb olarak paylaşma ve eğer yazım denetimini kullanıyorsan kodu paylaşmadan önce kullan. Sosyal'de nasıl kod paylaşılır?

pencere.destroy diyor daha sonra başka bir şey başlatmıyorsun. Dolayısıyla böyle bir sorun normal. Gelelim asıl mevzuya, pencereyi kapatıp yeni pencere açmaktansa, tavsiyem framei yok edip yeni frame kullanman. Örnek (Kod üzerinde çok oynama yapmadım. Frame'in içine eklemek için widgetları, master olarak frame vermen lazım);
Python:
import random
from tkinter import *


pencere = Tk()
cevap = random.randint(1,100)

def setFrame():
    global frame
    frame = Frame(master=pencere)
    baslik = pencere.title("Sayı Tahmin Oyunu")
    boyut = pencere.geometry("1920x1080")
    global cevapkutusu
    cevapkutusu = Entry(master=frame)
    cevapkutusu.pack()
    gonderbuton = Button(text="Gönder",command=cevap_tahmin, master=frame)
    gonderbuton.pack()

def yeniden_baslat():
    frame.destroy()
    setFrame()
    frame.pack()
    pencere.mainloop()


def cevap_tahmin ():
    global tahmin
    tahmin = int(cevapkutusu.get())
    cevapkutusu.delete(0,END)

    if tahmin > cevap:
        etiket = Label(master=frame,text="Daha küçük bir sayı gir ! {}".format(cevap))
        etiket.pack()
    elif tahmin < cevap:
        etiket = Label(master=frame,text="Daha büyük bir sayı gir !")
        etiket.pack()
    else:
        etiket = Label(master=frame, text="Oyunu kazandın !")
        etiket.pack()
        yenidenbaslat = Button(master=frame, text="Yeniden Başlat",command=yeniden_baslat)
        yenidenbaslat.pack()


setFrame()
frame.pack()
pencere.mainloop()
 
Son düzenleme:

Yeni konular

Geri
Yukarı