Как обновить определенный элемент в окне tkinter перед mainloop - PullRequest
0 голосов
/ 12 июня 2019

Я хотел бы обновить ярлык tkinter, чтобы он произнес какой-то текст, а затем попросил мой компьютер произнести его.

По какой-то причине, независимо от того, куда я положил код, компьютер говорит все, прежде чем вставить его в этикетку.

Я делаю чат-бота - вот код:

from tkinter import *
from random import choice
import os

ask = ["hi", "hello"]
hi = ["hi", "hello", "Hello too"]
error = ["sorry, i don't know", "what u said?"]

root = Tk()
user = StringVar()
bot = StringVar()

root.title(" Simple ChatBot ")
Label(root, text=" user : ").pack(side=LEFT)
Entry(root, textvariable=user).pack(side=LEFT)
Label(root, text=" Bot  : ").pack(side=LEFT)
Entry(root, textvariable=bot).pack(side=LEFT)


def main():
    question = user.get()
    if question in ask:
        response = choice(hi)
        bot.set(response)
        os.system("say '" + response + "'")
    else:
        bot.set(choice(error))


Button(root, text="speak", command=main).pack(side=LEFT)

mainloop()

Желаемый результат - программа, вставляющая ответ в метку, ТОГДА говоря.

По какой-то причине он делает обратное.

1 Ответ

0 голосов
/ 14 июня 2019

Попробуйте изменить os.system(...) на root.after(100, os.system, f"say '{response}'")

Кредит: acw1668

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...