Tkinter GUI を wiki ページに埋め込む方法を探しています。私は数時間Googleを見回しましたが、メソッドで成功していません. これを行う方法はありますか?
3 に答える
Web ブラウザーで Python コードを直接実行することはできません。*ただし、画像を作成するサーバー側コードと、それらの画像を操作してサーバーに情報を送信するクライアント側 JavaScript を使用することはできます。
* わかりました。ブラウザーで直接 Python コードを実行する、簡単で単純明快で、Web 上のどのユーザーにも有効な方法はありません (コメントと abarnert の回答を参照してください)。
MattDMo の回答が説明しているように、やりたいことを直接行うことは事実上不可能です。
しかし、間接的に行う方法があります。
まず、SkulptやBrythonなどの Python インタープリターのブラウザー内実装があります。それらのいずれかが Tkinter をサポートしているかどうかはわかりませんが、ある種の GUI はサポートしています。したがって、新しい言語ではなく、新しい GUI フレームワークを学ぶ必要があるかもしれません。
次に、pyjsなどの Python-to-JavaScript コンパイラーがあります。これにより、Python コードをブラウザーで直接実行することはできませんが、対話型インタープリターが必要な場合や動的コード生成が必要でない限り、通常は問題ありません。繰り返しますが、私は Tkinter をサポートするものを何も知らないので、新しい言語ではなく、新しい GUI フレームワークを学ぶ必要があるかもしれません。
新しい言語を学びたいが、JavaScript のようにぎこちなくしたくない場合は、「JavaScript のように機能するが、Python のように見える」言語であるCoffeeScriptを検討することをお勧めします。pyjs などと比較すると、CoffeeScript コードから生成された JavaScript コードは読み取り可能で、デバッグ可能で、元のコードに簡単にマップできます。
または、もちろん、弾丸を噛んで HTML/CSS/DOM/JS の方法を学ぶこともできます。
一方、実際の作業を行う「エンジン」と Tkinter の GUI フロントエンドにプログラムを分割することは、多くの場合、それ自体が良い考えであり、移植するコードが大幅に少なくなることを意味します。エンジンを WSGI Web サービスなどに直接接続し、フロント エンドのみを書き換える必要があります。
まったく異なる方向に進みます。特に LAN 上で少数のユーザーをサポートしようとしているだけの場合は、オプションがあります。VNC (または X11) をブラウザーに埋め込むことができます (これには多くの解決策があります。これには1 つは簡単な Google で最初に出てきました)、各ユーザーを、Tkinter アプリを実行するだけの小さな Linux セッションに誘導します。
* 実験的な Python ブラウザ プラグインがあります。また、Java アプレット内で Jython インタープリターを実行したり、Silverlight アプレットで IronPython コードを実行したりできます。しかし、これらはすべて悪い考えであり、とにかく Tkinter を提供するわけではなく、Python だけを提供します。
アイデア
これは大変な作業のように聞こえるかもしれませんが、実行する必要があり、問題が解決することを願っています:
- JavaScript の代わりに最新の Python バージョンを使用する独自の Web ブラウザーを作成します。実際、Tkinter を使用して Python で記述します。そうすれば、ウィジェットをより自然に使用できるようになります。
- 教えて。(私も手伝うかもしれません。)
- Python Tkinter ウィジェットを好きなように埋め込むことができるようにします。
- 悪意のある Python コードを書くのが好きな人や、大きな免責事項がある人を惹きつけないように、ブラウザーを作成する方法を考え出してください。
Python インタープリターと Tkinter を含むか依存するプラグインや拡張機能を作成し、それをインストールするようにページ リクエストを作成します。ウィキがプラグインをサポートしていること、またはプラグイン/拡張機能がプラグインをサポートしていないウィキをサポートしていることを確認してください。
他の人が言っているように、Python には Web ブラウザーで Tkinter ウィジェットを作成する自然な方法はありません。道を作るか、誰かのやり方を使わなければなりません。wiki にアプレットを配置できる場合は、他の誰かが言及した Jython メソッドをお勧めします。