Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中每隔几秒钟更改tkinter窗口中的一行文本_Python_Python 3.x_Tkinter - Fatal编程技术网

如何在python中每隔几秒钟更改tkinter窗口中的一行文本

如何在python中每隔几秒钟更改tkinter窗口中的一行文本,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我试图每隔几秒钟在tkinter窗口中显示一个字典中的随机短语 我只需在tkinter中的文本框中运行一个变量,就可以得到要显示的短语,但我似乎无法在所需的时间间隔内更改该短语 到目前为止,这是我的代码 导入时间 导入系统 随机输入 将tkinter作为tk导入 从tkinter进口* “词典词组” 短语=[“短语1”、“短语2”、“短语3”] def短语刷新(): 尽管如此: 短语打印=随机选择(短语) 时间。睡眠(1) 返回短语\u打印 短语=短语刷新() #Root是Tkinter窗口的名

我试图每隔几秒钟在tkinter窗口中显示一个字典中的随机短语

我只需在tkinter中的文本框中运行一个变量,就可以得到要显示的短语,但我似乎无法在所需的时间间隔内更改该短语

到目前为止,这是我的代码

导入时间
导入系统
随机输入
将tkinter作为tk导入
从tkinter进口*
“词典词组”
短语=[“短语1”、“短语2”、“短语3”]
def短语刷新():
尽管如此:
短语打印=随机选择(短语)
时间。睡眠(1)
返回短语\u打印
短语=短语刷新()
#Root是Tkinter窗口的名称。记住这一点很重要。
root=tk.tk()
#将背景色设置为黑色
root.configure(bg=“黑色”)
#删除顶部的窗口栏,创建真正的全屏显示
root.wm_属性('-fullscreen',true')
按钮(root,text=“Quit”,bg=“black”,fg=“black”,command=lambda root=root:Quit(root)).pack()
e=标签(根,文本=短语,fg=“白色”,bg=“黑色”,font=(“helvetica”,28))
e、 包()
root.mainloop()

运行此代码的结果是tkinter窗口永远不会打开,而不是更改显示的文本。我知道我一定是看多了一些简单的东西,但我似乎不知道是什么。提前谢谢你的帮助

由于
while True
循环,此函数永远不会返回:

def phraserefresh():
    while True:
        phrase_print = random.choice(phrases)
        time.sleep(1)
    return phrase_print # This line is never reached
您可以使用
after()
方法设置重复延迟并更改标签文本

def phrase_refresh():
    new_phrase = random.choice(phrases)
    e.configure(text=new_phrase) # e is your label
    root.after(1000, phrase_refresh) # Delay measured in milliseconds

谢谢你的帮助!虽然当运行该代码时,我要么根本没有得到短语,要么只是数字和函数名,要么是一个错误,说e没有定义。我做错了什么?@Megastrik3尝试将函数声明放在声明
e
(就在
mainloop()
之前)的那一行后面,其实没关系。我得到了它!您发布的代码不起作用的原因是因为我的e=标签。。。和e.pack()行的顺序不正确。我通过在这两行之间添加短语_refresh()来修复它。所以它现在起作用了!非常感谢您的时间和帮助@MegaStrike3经过再三考虑,我只是在单词标签(“标签”)中有一个拼写错误,我的大脑就是不让我看到。脸掌。所以现在它起作用了。谢谢你的提问!是的,那就够了@Kristen_G!很高兴你能找到答案!