我想更新一个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()
所需的结果是程序将响应插入标签,然后说出来。
出于某种原因,它却相反。
答案 0 :(得分:0)
尝试将os.system(...)
更改为root.after(100, os.system, f"say '{response}'")
信用:acw1668