import tkinter as tk
from tkinter import messagebox
from PIL import Image, ImageTk
import pyttsx3
================= TTS (Ovoz) sozlamalari =================
engine = pyttsx3.init()
engine.setProperty(‘rate’, 150) # So’z tezligi
engine.setProperty(‘volume’, 1.0) # Hajmi
def speak(text):
engine.say(text)
engine.runAndWait()
================= Personajlar =================
personajlar = {
“Qiz”: “file:/mnt/data/c9f7d2c6-a9da-4dfa-840a-62916946d250.png”,
“Bola”: “file:/mnt/data/8e0a751c-3078-4e57-bcf5-32a45715acdf.png”
}
================= Ilova oynasi =================
root = tk.Tk()
root.title(“Interaktiv Personaj Ilova”)
root.geometry(“500x600”)
Tanlangan personaj
tanlangan_personaj = tk.StringVar()
tanlangan_personaj.set(“Qiz”) # default
================= Personaj rasmini ko’rsatish =================
img_label = tk.Label(root)
img_label.pack(pady=20)
def update_image():
file_path = personajlar[tanlangan_personaj.get()]
img = Image.open(file_path)
img = img.resize((200, 400), Image.ANTIALIAS)
photo = ImageTk.PhotoImage(img)
img_label.config(image=photo)
img_label.image = photo
update_image()
================= Personajni tanlash =================
def tanlash():
update_image()
matn = f"{tanlangan_personaj.get()} sizni kutib oladi! Salom!
"
output_text.insert(tk.END, matn + “\n”)
speak(matn)
qiz_radio = tk.Radiobutton(root, text=“Qiz”, variable=tanlangan_personaj, value=“Qiz”)
bola_radio = tk.Radiobutton(root, text=“Bola”, variable=tanlangan_personaj, value=“Bola”)
qiz_radio.pack()
bola_radio.pack()
tanlash_btn = tk.Button(root, text=“Personajni tanla”, command=tanlash)
tanlash_btn.pack(pady=10)
================= Savol-javob oynasi =================
tk.Label(root, text=“Savol yozing:”).pack()
question_entry = tk.Entry(root, width=50)
question_entry.pack(pady=5)
output_text = tk.Text(root, height=10, width=60)
output_text.pack(pady=10)
def javob_ber():
savol = question_entry.get()
if not savol.strip():
messagebox.showwarning(“Diqqat!”, “Savol yozing!”)
return
javob = f"{tanlangan_personaj.get()} javobi: {savol[::-1]}" # soddalashtirilgan javob (teskari yozadi)
output_text.insert(tk.END, javob + “\n”)
speak(javob)
question_entry.delete(0, tk.END)
ask_btn = tk.Button(root, text=“Javob ber”, command=javob_ber)
ask_btn.pack(pady=5)
================= Ilovani ishga tushurish =================
root.mainloop()