线程执行不成功(Python,已计划)

问题描述 投票:0回答:1

我正在做Tkinter。我的函数可以正常运行(每分钟播放一次铃声),但是它不在线程上运行。每当我单击“开始”按钮时,程序窗口将灰显,并且顶部显示“没有响应”(因为我对start()的递归调用将其锁定,所以我认为是。)

我为什么不能正确穿线?谢谢。

def start():
    now = tt1.time()
    listOfTimes = []
    for t in timeSlotEFs:
        listOfTimes.append(t.get())
    now = datetime.now()
    timee = now.strftime('%H%M')
    print('here')
    for t in listOfTimes:
        if t==timee:
            winsound.PlaySound('newhourlychimebeg.wav',winsound.SND_FILENAME)
    s.enterabs(now+60,1,start) #I want to call recursively every 60 seconds
    s.run()
def start2():
    t = threading.Thread(target=start)
    t.run()            
startBtn = Button(ssFrame, text='Start', command=start2)
startBtn.grid(row=0,column=0,padx=paddX,pady=paddY)

python multithreading scheduler
1个回答
1
投票

感觉就像您混入了threading.Thread所导入的定义之间。您应该先创建运行函数,然后创建start线程。

通过这种方式,我可以看到结果并且可以正常工作:

from tkinter import *
import threading
root = Tk()

def run():
    print('hello Thread')

def start2():
    t = threading.Thread(target=run)
    t.start()
    print(t) # Output: <Thread(Thread-1, stopped 10580)>


startBtn = Button(root, text='Start', command=start2)
startBtn.grid(row=0,column=0)

root.mainloop()

© www.soinside.com 2019 - 2024. All rights reserved.