运行服务器,我做的是创建一个单独的Python的Web服务器,该服务器的计划书后:的Tkinter窗口冻结从脚本
import os, sys
from http.server import HTTPServer, CGIHTTPRequestHandler
webdir = '.'
port = 8000
print('Server Now Running')
os.chdir(webdir)
srvraddr = (('' , port))
srvrobj = HTTPServer(srvraddr, CGIHTTPRequestHandler)
srvrobj.serve_forever()
,然后原来的程序运行由命令行服务器:
def runServer(self):
os.system('Webserver.py')
所有这些都是通过Tkinter窗口中的按钮完成的。当这个函数被调用时,Tkinter窗口会冻结,并且不能按下下一个按钮(一个会在Safari中通过服务器拉起本地html文件)。
我环顾四周,它看起来像我可能需要线程或东西...
我已经离开了我一无所知,我怎么会去这一点。如果有必要,可以提供更多我的原始程序(这有点笨拙)。
我正在寻找一个简单的解决方案或可能是一个具体的参考,让我朝着正确的方向前进。
Python非常新(3个月),所以请记住这一点。
当你运行'os.system'时,它会等到它结束。这种'mainloop'不能完成它的工作 - 接收键/鼠标事件,发送到窗口小部件,重绘窗口小部件等。你需要模块'threading'或'subprocess'作为单独的线程/进程运行服务器,然后'mainloop '会做好自己的工作。 – furas
现在就研究这个......你能给我一个这个程序中看起来像什么的概念吗? – peer
[线程](https://docs.python.org/3.5/library/threading.html)和[subprocess](https://docs.python.org/3.5/library/subprocess.html) – furas