python - Python Tkinter:如何用一个按钮更改两个字符串变量,中间有延迟?
问题描述
我是 python/tkinter 的新手,我想知道如何按下一个按钮并让两个变量更改文本,但两者之间有 1 秒的延迟。例如,如果我单击一个按钮,text1 将更改为“已更改”,然后一秒钟后,将 text2 更改为“已更改”。谢谢!
import tkinter as tk
from time import sleep
x = tk.Tk()
root = tk.Frame(x)
root.grid()
def change(str1,str2):
str1.set("Changed")
sleep(1)
str2.set("Changed")
str1 = tk.StringVar()
str2 = tk.StringVar()
str1.set("One")
str2.set("Two")
text1 = tk.Label(root,textvariable=str1)
text2 = tk.Label(root,textvariable=str2)
text1.grid(row=1)
text2.grid(row=1,column=1)
button1 = tk.Button(root,text="Click",command=lambda:change(str1,str2))
button1.grid()
x.mainloop()
解决方案
使用time.sleep
会阻塞你的主线程。您可以使用可以在此处after
阅读的方法。
import tkinter as tk
x = tk.Tk()
root = tk.Frame(x)
root.grid()
def change(str1,str2):
str1.set("Changed")
root.after(1000,lambda: str2.set("Changed"))
str1 = tk.StringVar()
str2 = tk.StringVar()
str1.set("One")
str2.set("Two")
text1 = tk.Label(root,textvariable=str1)
text2 = tk.Label(root,textvariable=str2)
text1.grid(row=1)
text2.grid(row=1,column=1)
button1 = tk.Button(root,text="Click",command=lambda:change(str1,str2))
button1.grid()
x.mainloop()
推荐阅读
- c++ - 标准库或编译器在哪里利用 noexcept 移动语义(向量增长除外)?
- node.js - 根据部分路径的动态键映射获取json值
- python - 如何将其转换为列表或 numpy 数组
- java - Jackson.databind 异常的 Weblogic 部署问题
- c# - 在 Win 表单上出现错误“拒绝访问”
- vue.js - Nuxt.js:我可以使用基于布尔值的三元运算符添加一个类吗?
- multithreading - 当内存使用率变高时,Perl 多线程会变慢
- wordpress - 使用 Woocommerce Stripe 形成条纹信用卡未在 wordpress 上显示
- python - ImportError:没有名为robotparser的模块
- vba - VBA宏用于识别excel表格上的过滤条件是否显示数据,如果显示,如何获取特定的列单元格过滤数据