Tkinter和CherryPy并发

2024-09-30 16:32:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个程序,该程序在主线程中使用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在循环中阻止它


Tags: 程序servertkinterdefbuttonrootsocket线程
1条回答
网友
1楼 · 发布于 2024-09-30 16:32:21

不要叫快速入门。阅读它的(短!)code并使用你需要的部分。在这种情况下,只需停止engine.block()调用,它就不会阻塞(并且不需要在单独的线程中启动它)

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

相关问题 更多 >