tkinterle basit bir kelime oyunu yazıyodum her şey gayet iyiydi lakin penceredeki yenileme butonuna bastıktan sonra program yazılan kelimeyi kabul etmiyor kodlar biraz uzun ama yardımcı olursanız sevinirim:)
kodlar:
import tkinter as tk
import time
import random
from tkinter import messagebox
from playsound import playsound
##3#33##3# 54
class root(tk.Tk):
dictionary = {"yere serilen şeyler":["minder", "yorgan", "halı", "kilim", "havlu"],
"açılan şeyler":["kutu", "kalem", "saç", "ambalaj", "kabak çiçeği"],
"bozulan şeyler":["insan", "yemek", "saat", "bilgisayar"]}
wordlist = ["minder", "yorgan", "halı", "kilim", "havlu", "kutu", "kalem", "saç", "ambalaj", "kabak çiçeği", "insan", "yemek", "saat", "bilgisayar"]
value = 1
cevapdeger = 0
rakipcevapdeger = 0
kontrol = set()
rakipkontrol = set()
def __init__(self):
super().__init__()
self.iconbitmap(r"C:\Users\toshiba\Downloads\download.ico")
self['bg'] = "purple"
self.title("kelime oyunu")
self.geometry("350x450")
self.cevapkutusu = tk.Entry(width=27)
self.cevapkutusu.place(x=84, y=427)
self.dugme = tk.Button(text="✅",bg="yellow", fg="white", command=self.islem)
self.dugme.place(x=253, y=423)
self.soru = tk.Label(text=random.choice([x for x in self.dictionary.keys()]), bg="purple")
self.soru.place(x=119, y=34)
self.etiket = tk.Label(text="""Bot VS SEN""", bg="purple")
self.etiket.place(x=119, y=1)
self.cevapalanı = tk.Listbox(width=54, height=23)
self.cevapalanı.place(x=10, y=53)
self.yeniledugme = tk.Button(text="",bg="purple", command=self.yenile)
self.yeniledugme.place(x=323, y=1)
self.bilgidugme = tk.Button(text="i", width=2, fg="white", bg="blue", command=self.bilgiislem)
self.bilgidugme.place(x=1, y=1)
def rakipkontrolislem(self):
self.cevap = self.cevapkutusu.get()
self.dugme['state'] = "disabled"
self.rakipcevap = random.choice(self.wordlist)
if not self.rakipcevap in self.rakipkontrol and not self.rakipcevap in self.kontrol:
if self.rakipcevap in self.dictionary[self.soru['text']]:
self.cevapalanı.insert(self.value, "Bot Olric: "+"✅"+self.rakipcevap)
self.cevapalanı.itemconfig(self.value-1, fg="green")
self.rakipcevapdeger += 5
self.rakipkontrol.add(self.rakipcevap)
elif not self.rakipcevap in self.dictionary[self.soru['text']]:
self.cevapalanı.insert(self.value, "Bot Olric: "+"✖"+self.rakipcevap)
self.cevapalanı.itemconfig(self.value-1, fg="red")
self.rakipcevapdeger -= 2
self.rakipkontrol.add(self.rakipcevap)
self.value += 1
else:
self.rakipkontrolislem()
def kontrolislem(self):
if not self.cevap in self.kontrol and not self.cevap in self.rakipkontrol:
if self.cevap in self.dictionary[self.soru['text']]:
self.cevapalanı.insert(self.value, "Sen: "+"✅"+self.cevap)
self.cevapalanı.itemconfig(self.value-1, fg='green')
self.cevapdeger += 5
self.kontrol.add(self.cevap)
if not self.cevap in self.dictionary[self.soru['text']]:
self.cevapalanı.insert(self.value, "Sen: "+"✖"+self.cevap)
self.cevapalanı.itemconfig(self.value-1, fg='red')
self.cevapdeger -= 2
self.kontrol.add(self.cevap)
else:
messagebox.showwarning("uyarı!", "{} daha önce yazıldı".format(self.cevap))
self.value -= 1
def islem(self):
if self.value < 22:
self.cevap = self.cevapkutusu.get()
self.kontrolislem()
self.value += 1
if self.value%2==0:
self.rakipkontrolislem()
self.dugme['state']="normal"
else:
self.dugme['state']="disabled" #### KAZANANIN İSMİ YAZILACAK
self.kazanan = {self.rakipcevapdeger:"Bot Olric", self.cevapdeger:"Sen"}
#playsound("C:/Users/toshiba/AppData/Local/Programs/Python/Python39/siuuu.mp3")
messagebox.showinfo("Oyun Bitti", """
Kazanan:{}
Sen: {} puan
Bot Olric: {} puan""".format(self.kazanan[max(self.kazanan.keys())], self.cevapdeger, self.rakipcevapdeger))
#playsound("C:/Users/toshiba/AppData/Local/Programs/Python/Python39/siuuu.mp3")
def rakip(self):
self.cevap = self.cevapkutusu.get()
self.dugme['state'] = "disabled"
self.rakipcevap = random.choice(self.wordlist)
if self.rakipcevap in self.dictionary[self.soru['text']]:
self.cevapalanı.insert(self.value, "Bot Olric: "+"✅"+self.rakipcevap)
self.cevapalanı.itemconfig(self.value-1, fg="green")
self.rakipcevapdeger += 5
elif not self.rakipcevap in self.dictionary[self.soru['text']]:
self.cevapalanı.insert(self.value, "Bot Olric: "+"✖"+self.rakipcevap)
self.cevapalanı.itemconfig(self.value-1, fg="red")
self.rakipcevapdeger -= 2
self.value += 1
def yenile(self):
self.cevapalanı.delete(0,self.value)
self.value/=self.value
self.soru['text']=random.choice([x for x in self.dictionary.keys()])
self.rakipcevapdeger *= 0
self.cevapdeger *= 0
self.dugme['state'] = "normal"
def bilgiislem(self):
messagebox.showinfo("bilgi", "her doğru cevap +5puan\nher yanlış cevap -2 puan\nrakibiniz bir bot")
root().mainloop()
hata:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\toshiba\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 1892, in __call__
return self.func(*args)
File "C:\Users\toshiba\Desktop\pythonproje\olricxreel.py", line 99, in islem
self.kontrolislem()
File "C:\Users\toshiba\Desktop\pythonproje\olricxreel.py", line 85, in kontrolislem
self.cevapalanı.insert(self.value, "Sen: "+"✖"+self.cevap)
File "C:\Users\toshiba\AppData\Local\Programs\Python\Python39\lib\tkinter\__init__.py", line 3197, in insert
self.tk.call((self._w, 'insert', index) + elements)
_tkinter.TclError: bad listbox index "1.0": must be active, anchor, end, @x,y, or a number
penceredeki yenileme tuşu: