from tkinter import *
import random
def create_story():
name = txt1.get()
friend_name = txt2.get()
favorite_animal = txt3.get()
home = txt4.get()
street = txt5.get()
trait = trait_var.get()
length = length_var.get()
themes = [
f"Однажды в волшебном лесу {name} и его лучший друг {friend_name} нашли {favorite_animal}.",
f"{name} и {friend_name} стали героями, когда встретили {favorite_animal} на улице {street}.",
f"В доме {home} произошла удивительная история с {favorite_animal}, которая изменила жизнь {name} и {friend_name}."
]
if trait:
themes.append(f"{name}, известный своей {trait}, и {friend_name} столкнулись с {favorite_animal}.")
random_events = [
f"Вдруг, к ним подошел волшебник и предложил загадку.",
f"{favorite_animal} начал говорить человеческим голосом.",
f"Неожиданно начался дождь, и все укрылись под крышей дома {home}."
]
if random.choice([True, False]):
themes.append(random.choice(random_events))
if length == "Короткий":
story = random.choice(themes)
elif length == "Средний":
story = " ".join(random.sample(themes, 2))
else:
story = " ".join(random.sample(themes, 3))
text_area.delete(1.0, END)
text_area.insert(END, story)
def clear_entries():
for entry in entries:
entry.delete(0, END)
text_area.delete(1.0, END)
def save_story():
story = text_area.get(1.0, END).strip()
if story:
with open("story.txt", "w", encoding="utf-8") as f:
f.write(story)
text_area.insert(END, "\n\nИстория сохранена в 'story.txt'.")
root = Tk()
root.title("Сказочник")
root.geometry("400x700")
root.config(bg="lightblue")
labels_and_entries = [
"Введите имя",
"Имя друга",
"Любимое животное",
"Дом",
"Улица"
]
entries = []
for label_text in labels_and_entries:
Label(root, text=label_text, font="Arial 16", bg="lightblue").pack(pady=5)
entry = Entry(root, width=20, bd=4, font="Arial 16", bg="lightgreen")
entry.pack(pady=5)
entries.append(entry)
txt1, txt2, txt3, txt4, txt5 = entries
trait_var = StringVar()
Label(root, text="Выберите черту персонажа", font="Arial 16", bg="lightblue").pack(pady=5)
traits = ["доброта", "храбрость", "ум", "чувство юмора"]
for trait in traits:
Radiobutton(root, text=trait, variable=trait_var, value=trait, bg="lightblue").pack(anchor=W)
length_var = StringVar(value="Короткий")
Label(root, text="Выберите длину истории", font="Arial 16", bg="lightblue").pack(pady=5)
length_options = ["Короткий", "Средний", "Длинный"]
for option in length_options:
Radiobutton(root, text=option, variable=length_var, value=option, bg="lightblue").pack(anchor=W)
Button(root, text="Создать рассказ", command=create_story).pack(pady=10)
Button(root, text="Очистить", command=clear_entries).pack(pady=10)
Button(root, text="Сохранить историю", command=save_story).pack(pady=10)
text_area = Text(root, width=50, height=15, font="Arial 14")
text_area.pack(pady=10)
root.mainloop()
текстовых полей (Entry) какую-либо информацию (имя, любимое
животное, лучший друг и т.д.), а затем на основе этих значений
выводит в многострочную текстовую область (Text) небольшой
рассказ.
from tkinter import *
def printer():
lbl3["text"] = txt3.get()
lbl2["text"] = txt2.get()
lbl4["text"] = txt4.get()
lbl1["text"] = txt1.get()
lbl5["text"] = txt5.get()
def del_text():
txt1.delete(0,END)
txt2.delete(0,END)
root = Tk()
root.geometry("400x500")
lab1 = Label(root, text="введите имя", font="Arial 20")
lab1.pack()
txt1 = Entry(root, width=20,bd=4,font="Arial 20",bg="green")
txt1.pack()
lab2 = Label(root, text="имя друга", font="Arial 20")
lab2.pack()
txt2 = Entry(root, width=20,bd=4,font="Arial 20",bg="green")
txt2.pack()
lab3 = Label(root, text="любимое животное", font="Arial 20")
lab3.pack()
txt3 = Entry(root, width=20,bd=4,font="Arial 20",bg="green")
txt3.pack()
lab4 = Label(root, text="дом", font="Arial 20")
lab4.pack()
txt4 = Entry(root, width=20,bd=4,font="Arial 20",bg="green")
txt4.pack()
lab5 = Label(root, text="улица", font="Arial 20")
lab5.pack()
txt5 = Entry(root, width=20,bd=4,font="Arial 20",bg="green")
txt5.pack()
but = Button(root, text="Печать", command=getText)
but.pack()
but3 = Button(root, text="Очистка", command=del_text)
but3.pack()
label = Label()
label.pack()
root.mainloop()