我正在编写一个在主线程中使用tkinter进行接口的程序。一旦用户单击该按钮,将在另一个线程中启动cherrypy服务器。
...
def startServer():
class HelloWorld(object):
@cherrypy.expose
def printText(self):
print("Printing Some Text")
return {"sucess": "true"}
cherrypy.config.update({
'server.socket_host': '127.0.0.1',
'server.socket_port': 8080,
})
cherrypy.quickstart(HelloWorld(), '/', conf)
def serverExec():
t = threading.Thread(target=startServer, args=())
t.start()
root = Tk()
button = Button(top, text="Run", command=serverExec)
button.grid(row=0, column=0, columnspan=2, sticky=W + E)
root.mainloop()
我想知道如何在单击“停止”按钮时停止Cherrypy线程。我不知道如何与Cherrypy线程通信,因为Cherrypy会在一个循环中阻止它。
请勿拨打快速入门。阅读其(简称!)code,然后使用您需要的零件。在这种情况下,只需取消engine.block()
调用,它就不会阻塞(并且您不需要在单独的线程中启动它)。
然后从engine.stop()
按钮调用exit
(不是Stop
–是用于关闭进程)。如果需要,请从另一个按钮再次调用engine.start()
。