import tkinter as tk
import threading
import time,random
class APP():
def init(self,root):
self.root = root
self.lb1 = tk.Label(root,text = 'lb1',bg = 'blue',width = 20, height = 4)
# self.lb1.pack()
self.lb2 = tk.Label(root,text = 'lb2',bg = 'red',width = 20, height = 4)
# self.lb2.pack()
self.lb3 = tk.Label(root,text = 'lb3',bg = 'green',width = 20, height = 4)
# self.lb3.pack()
self.li = [self.lb1,self.lb2,self.lb3]
def _ran(self,root):
i = 0
while i<10:
for a in self.li:
root.update()
time.sleep(1)
a.place(x = 300, y = 200)
i+=1
def go(self):
self._ran(self.root)
root = tk.Tk()
root.geometry('800x600')
app = APP(root)
t = threading.Thread(target = app.go)
t.start()
root.mainloop()
如何让标签循环显示,我这么写显示一轮就不动了,新手小白自学,求指教
测试有循环,下次提问请使用插入代码,要不代码没有缩进,很少人会来帮你回答
import tkinter as tk
import threading
import time,random
class APP():
def __init__(self,root):
self.root = root
self.change()
def change(self):
self.lb1 = tk.Label(root, text='lb1', bg='blue', width=20, height=4)
# self.lb1.pack()
self.lb2 = tk.Label(root, text='lb2', bg='red', width=20, height=4)
# self.lb2.pack()
self.lb3 = tk.Label(root, text='lb3', bg='green', width=20, height=4)
# self.lb3.pack()
self.li = [self.lb1, self.lb2, self.lb3]
def _ran(self,root):
i = 0
while i<10:
print(i)
for a in self.li:
self.change()
time.sleep(1)
a.place(x = 300, y = 200)
i+=1
def go(self):
self._ran(self.root)
root = tk.Tk()
root.geometry('800x600')
app = APP(root)
t = threading.Thread(target = app.go)
t.start()
root.mainloop()
tkinter有一个after方法可以满足你的要求
def func():
label.config(text="xxx")#刷新label内容
label.after(1000,func)#每隔1000毫秒(1秒)执行一次func函数
func()
当然也可以使用多线程和time模块结合使用,但很容易出现bug,非常不推荐。