如果点击按钮,运行了一个比较耗时的操作,那么界面会卡死。
import tkinter as tk
import time
def onclick(text, i):
time.sleep(3)
text.insert(tk.END, '按了第{}个按钮\n'.format(i))
root = tk.Tk()
text = tk.Text(root)
text.pack()
tk.Button(root, text='按钮1', command=lambda :onclick(text,1)).pack()
tk.Button(root, text='按钮2', command=lambda :onclick(text,2)).pack()
root.mainloop()
解决办法:
方式一、直接开线程
import tkinter as tk
import time
import threading
songs = ['爱情买卖','朋友','回家过年','好日子']
movies = ['阿凡达','猩球崛起']
def music(songs):
global text # 故意的,注意与movie的区别
for s in songs:
text.insert(tk.END, "听歌曲:%s \t-- %s\n" %(s, time.ctime()))
time.sleep(3)
<