我有代码应该显示 tkinter 小部件(注意:尚未实现)和另一个线程之间的通信。作为这两者之间的通信,我选择 python 队列。要查看真正发生的事情,控制台中会显示打印,这不是我所期望的。
如可以在控制台输出可以看出在睡眠时间后generate_text输出从process被示出。我的预期是,由于generate_text是慢然后process我会看到更多的process is called,然后Item x,但这没有发生。
import tkinter as tk
import threading
import queue
import time
def generate_text(storage):
count = 0
while True:
message = "Item {}".format(count)
storage.put(message)
print(message)
count +=1
time.sleep(3000/1000)
def process(storage):
print("process is called")
try:
storage.get()
except queue.Empty:
print("queue empty")
# register awake function
root.after(500, process, message)
# init variables
message = queue.Queue()
root = tk.Tk()
t = threading.Thread(target=generate_text, args=(message,))
t.setDaemon(True)
t.start() …Run Code Online (Sandbox Code Playgroud)