Tkinter和CherryPy并发性

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

我正在编写一个在主线程中使用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会在一个循环中阻止它。

python multithreading tkinter cherrypy
1个回答
0
投票

请勿拨打快速入门。阅读其(简称!)code,然后使用您需要的零件。在这种情况下,只需取消engine.block()调用,它就不会阻塞(并且您不需要在单独的线程中启动它)。

然后从engine.stop()按钮调用exit(不是Stop –是用于关闭进程)。如果需要,请从另一个按钮再次调用engine.start()

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