В приложении Tkinter проверить добавление значений в список
Делаю приложение на Tkinter. Это игра. Она заключается в следующем: пользователь задает любые вопросы и получает случайно выбранные ответы из имеющегося списка. Одна из функций, которую пытаюсь реализовать, "обучение" движка игры. Пользователь должен иметь возможность занести в исходный список свои значения ответов.
Ради этого написал функцию, и возникли 2 вопроса: 1) действительно ли она реализует задуманный функционал? 2) если новый вариант ответа, как и хотели, добавляется, то делается это так сказать глобально и работает для всех сессий либо же локально, и обновления движок "забудет", как только пользователь закроет окно игры?
Код функции для "обучения" движка:
import tkinter as tk
window = tk.Tk()
# создадим рамку, которая формирует область с дообучением модели новыми вариантами ответов
# (производится ручным способом)
frame_training = tk.Frame(
master=window,
relief=tk.RIDGE,
borderwidth=5
)
# добавим второй фрейм в первый "обучающий" фрейм
frame_training_text_with_scroll = tk.Frame(
master=frame_training
)
# данная область предназначена для внесения новых вариантов ответов
# текстовую область расположили внутри фрйема скролинга
text_box_train = tk.Text(
master=frame_training_text_with_scroll,
width=90,
height=5,
bg='#EBF1F2',
fg='black'
)
# создадим элемент кнопки Обучить шар
button_train = tk.Button(
master=frame_training,
text='Обучить шар',
width=15,
height=2,
bg='#B533FF',
fg='yellow',
activebackground='#C4B1C3'
)
# создадим элемент кнопки Очистить (для обучения шара)
button_train_clear = tk.Button(
master=frame_training,
text='Очистить',
width=15,
height=2,
bg='#B533FF',
fg='yellow',
activebackground='#C4B1C3'
)
frame_training.grid(
row=1, column=0,
columnspan=2,
sticky='e'
)
text_box_train.grid(
row=0, column=0,
sticky='news'
)
button_train.grid(
row=2, column=0, sticky='ew'
)
button_train_clear.grid(
row=2, column=1, sticky='ew'
)
# привязываем команду "обучения" шара к кнопке
button_train.bind('<Button>', train_sphere)
# привязываем команду очистки поля "обучения" шара к кнопке
button_train_clear.bind('<Button>', clearTextTrain)
# функция "обучения"
def train_sphere(event):
responses = ['Да', 'Нет', 'Скорее всего да', 'Скорее всего нет', 'Возможно', 'Имеются перспективы', 'Вопрос задан неверно']
new_res = text_box_train.get('1.0', tk.END) # читаем текст с новым вариантом ответа из виджета text_box_train
window.update_idletasks()
if not new_res.strip():
text_box_train.insert(tk.END, 'Добавьте вариант ответа\n')
else:
responses.append(new_res)
time.sleep(2)
text_box_train.insert(tk.END, '\nНовый вариант ответа теперь в программе' + '\n')
# функция очистки поля добавляемых вариантов ответа
def clearTextTrain(event):
time.sleep(1)
text_box_train.delete('1.0','end')
window.mainloop()