问题
如何在同一脚本中同时运行 Tkinter mainloop
和无限服务器循环?
背景
我正在使用 Tkinter ( Python 2.7.3) 创建一个 GUI 服务器。到目前为止,GUI 工作正常,服务器工作正常,但是我在整合两者时遇到了问题。据我所知(如果我错了请纠正我)服务器需要无限循环运行才能接受新用户。可悲的是,GUI 还需要一个无限循环。我想知道如何让两个循环同时运行。
我当前的主循环函数如下所示(s
是套接字对象):
def mainloop(s):
while True:
channel, addr = s.accept()
print "Connected with", addr
这显然是保持服务器运行所必需的(我认为)。但问题是,这个循环出现在我的 mainloop
之前,因此我对此有疑问。如果我反过来做,服务器永远不会打开。
完整代码
谢谢!
最佳答案
使用线程模块在新线程中打开服务器主循环。
替换
mainloop(s)
与
thread.start_new_thread(mainloop, (s,))
然后你可以调用 root.mainloop() 来运行 Tkinter,就像你做的那样。
更新
根据下面 A. Rodas 的评论,最好使用与 Python 3 兼容的较新的 threading
模块。
所以你可以替换
mainloop(s)
与
threading.Thread(target=mainloop, args=(s,)).start()
关于python - 循环之神再次来袭——如何在 GUI mainloop 的情况下保持套接字连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15754878/