下面是我在评论中所说的一个简单的例子:import Tkinter as tk
import threading
import random
import time
from Queue import Queue, Empty
root = tk.Tk()
time_label = tk.Label(root, text=' seconds')
volt_label = tk.Label(root, text=' volts')
time_label.pack()
volt_label.pack()
def DAQ(q):
while True:
q.put((time.time(), random.randrange(100)))
time.sleep(2)
def update_data(queue, root):
try:
timestamp, volts = queue.get_nowait()
except Empty:
pass
else:
time_label.config(text='{:.1f} seconds'.format(timestamp))
volt_label.config(text='{:.4f} volts'.format(volts))
root.after(100, update_data, queue, root)
data_queue = Queue()
t = threading.Thread(target=DAQ, args=(data_queue,))
t.daemon = True
t.start()
update_data(data_queue, root)
root.mainloop()
显然,上面的DAQ()函数只是真实事物的替代品。关键是,正如@ballsdotballs在他们的答案中建议的那样,您可以在DAQ线程中以任何速率采样,将值添加到队列中,然后以更合适的速率更新GUI。在