Tkinter taş kağıt makas

Öncelikle merhaba tkinterde taş kağıt makas programı ile uğraşıyorum şu şekilde birşey yaptım ama kodlar tek seferlik çalışıyor acaba burda pencereyi sürekli yenilemem falan mı gerekiyor yardımcı olurmusunuz lütfen

from tkinter import *

import random

class Oyun(Tk):
    def __init__(self):
        super().__init__()

        self.title("Başlık")
        self.geometry("200x200")

        self.etiket = Label(text="")
        self.etiket.pack()

        self.bt = Button(text="Taş", command = self.ta)
        self.bt.pack()
        
        self.bt1 = Button(text="Kağıt", command = self.ka)
        self.bt1.pack()
        
        self.bt2 = Button(text="Makas", command = self.ma)
        self.bt2.pack()

        self.liste = ["Taş", "Kağıt", "Makas"]
        self.seç_bil = random.choice(self.liste)
        
    def ta(self):
        if self.seç_bil == "Taş":
            self.etiket["text"] = "Berabere"
        elif self.seç_bil == "Makas":
            self.etiket["text"] = "Oyuncu kazandı"
        else:
            self.etiket["text"] = "Bilgisayar kazandı"
        
        
    def ka(self):
        if self.seç_bil == "Kağıt":
            self.etiket["text"] = "Berabere"
        elif self.seç_bil == "Taş":
            self.etiket["text"] = "Oyuncu kazandı"
        else:
            self.etiket["text"] = "Bilgisayar kazandı"
        
          

    def ma(self):
        if self.seç_bil == "Makas":
            self.etiket["text"] = "Berabere"
        elif self.seç_bil == "Taş":
            self.etiket["text"] = "Oyuncu kazandı"
        else:
            self.etiket["text"] = "Bilgisayar kazandı"
        
    def ana(self):
        self.seç_bil = random.choice(self.liste)
        self.ta()
        self.ka()
        self.ma()
    def çalıştır(self):
        self.ana()
a = Oyun()

a.mainloop()
1 Beğeni

Eğer self.seç_bil = random.choice(self.liste) kodunu __init__ fonksiyonundan silip ta(), ka(), ma() fonksiyonlarının başına atarsanız sorununuz çözülecektir.
Örnek

def ta(self):
        self.seç_bil = random.choice(self.liste)
        if self.seç_bil == "Taş":
            self.etiket["text"] = "Berabere"
        elif self.seç_bil == "Makas":
            self.etiket["text"] = "Oyuncu kazandı"
        else:
            self.etiket["text"] = "Bilgisayar kazandı"

Bir de oyunda bazı hatalar var. Mesela ben makas seçtiğimde seçbil taş ise bilgisayar kazanması lazım.

2 Beğeni