からサーバーを実行した後、私は別の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'モジュールが必要です。 'はその仕事をすることができます。 – furas
これを今調査しています...私はこのプログラムでどのように見えるか考えていただけますか? – peer
[スレッド](https://docs.python.org/3.5/library/threading.html)と[サブプロセス](https://docs.python.org/3.5/library/subprocess.html) – furas