2008-09-16 8 views
1

私は、ゲームではなく現実の仕事用アプリケーションであるデータを表示するグラフィカルアプリケーションを開発しています。これは、クロスプラットフォームである必要がありますので、私が選んだ:OPENGLユーザインタフェースプログラミング

  • パイソン
  • のOpenGL(私はブレンド3D、テクスチャなどを必要とする)
  • pyopengl
  • WX/pywx - ウィンドウ、ダイアログなど

最後のコンポーネント - WX - が質問を発生させます。私は非常に見栄えの良いアプリ(プロトタイプが滑らかに見える)をまとめることができます - しかし、私は質問をするためにユーザーと対話する必要があるときは、入力を取得するために、私はWXを使用する必要があります。これは、ブレンド、滑らかな動き、質感など

とフルスクリーン3Dアプリの上に伝統的なダイアログやコンボやテキスト入力を持つ伝統的なUIを持っているアプリは矛盾に見える誰もがOpenGLとのpythonを使用してGUIを開発していますか?使用したツールキットやトリックを私と共有できますか?コンボ、テキスト入力、ボタン、ラジオ、オプションボタン、ツリービューが必要です。

そこにはいくつかのツールキットがありますが、不完全または古いものであり、維持されていないものもあります。素晴らしい例がpyUI(http://pyui.sourceforge.net/)です。何年も滑らかではありません。

+0

あなたが参照している不一致を強調するためにスクリーンショットを投稿する可能性があります。そうでなければ、Mike Fに同意します。首。 – thing2k

答えて

1

Clutterをご覧になるといいかもしれません。私はまだそれを使用していないが、私は今後の個人的なプロジェクトに行くつもりです。

12

これは答えではなく、より多くの嘆願です:しないでください。

あなたの再実装されたウィジェットには、ユーザーが見逃すことのないあらゆる種類の機能がありません。あなたのテキスト入力ボックスはdrag'n'dropをサポートしますか?コピーペースト?右から左へのスクリプト?ドラッグ選択しますか?ダブルクリックしますか?これらのすべてのメカニズムは、サポートしている各プラットフォームの本来の規約に従いますか?

あなたのウィジェットは、アプリケーションと矛盾するように見えるかもしれませんが、少なくとも彼らは同じくらい重要なOSと一貫して見えます。さらに重要なことは、ユーザーが期待することができることです。

(編集)3つの投稿と-3点?カルマ・ウルレスのこの巣をねじ留めてください。オリジナルのポスター:私はOpenGLで(ゲームUIのための)基本的なウィジェットを実装しました。それは仕事の無限の悪夢でした。

+1

あなたの答えは時間の有効な部分だと思いますが、必ずしもそうとは限りません。アプリがフルスクリーンGLアプリケーションで、ユーザーがほぼ独占的に使用する場合、ユーザーは標準のデスクトップ動作を期待していない可能性があります。コンソールゲーム(ps3、xboxなど)について考えてみましょう。彼らは伝統的なGUIを持っておらず、だれにも不満はありません。私は、一般的に、デスクトップアプリケーションはデスクトップGUIを持っているべきであることに同意しますが、今は例外を作ることができます。 –

+0

@Mike F:あなたのウィジェットはアプリと矛盾するように見えるかもしれませんが、少なくとも重要なOSと一貫して見えるでしょうと書いています。私は、内部の一貫性がOSの一貫性よりも高いランクで読んだことがあります。少しだけですが、トレードオフが行われる場合は、トレードオフは、あなたが暗示しているように常に黒と白ではありません。 –

+0

Mike Fさんには非常に良い点があります。簡単なウィジェットを実装するのは非常に時間がかかります。ユーザーが期待していることがほとんどないことと、OSの違いが小さいからです。アプリの視覚化/メニューが調和していないことと、ホイールを再発明するのではなく、十分に確立されたUIツールキットを使用することとの間で妥協点を見つけることがはるかに好ましい。 –

1

wxの代わりにQtを試してみてください。

QTはクロスプラットフォームであり、CSSを使用してたくさんのスタイルを適用できます。それは非常によく文書化されており、優れたPythonバインディングを持っています。実際、PyQTのドキュメントではなく、C++のドキュメントを使用しています。

3

Python + Qt + OpenGL - 確かに、どんなアプリケーションでも、Pythonを使ってより速く、より良く書くことができると思います。 QT4はクロスプラットフォームで、美しく、ウィジェットから必要なもの(アクセシビリティなど)を実装し、OpenGLと統合します。つまり、コード内でレンダリングするOpenGLのビューポートであるウィジェットを単純に作成することができます。

ほとんどのものをカバーするが、ユーザーインターフェイス上ではそうではない3D対応の解決策は、PythonスクリプトでBlender3Dを拡張することです。 3D機能とレンダリングがあり、Pythonで同じようにスクリプトを作成すると、クロスプラットフォームになります。また、OpenGLだけではなく、3Dのものではより高いレベルのツールが得られます。 PyQTと比較した場合、主にUIの観点から明らかな欠点がありますが、それは可能です。

1

wxとQTの両方が、OSのルックアンドフィールに一致するアプリケーションを作成する優れた仕事をします。 それはopengに直接すべてのウィジェットを自分でimplmentすることも可能であり、このスラッシュドットの記事一覧利用できるセット

http://ask.slashdot.org/askslashdot/02/12/24/1813219.shtml?tid=156 キツネのいくつかは、おそらく最も発達しているが、すべてのプラットフォーム上のウィンドウのように見えます。

7

QTの最新リリースでは、実際にそのようなことをしたい場合は、 OpenGLコンテキストに描画することができます。それ以外の場合は、一部のゲームエンジンで使用されているCEGuiがあります。

あなた自身を啓発したいと思わない限り、自分でGUIウィジェットを実装することは、ルックと機能性の最も基本的なものに満足していない限り、時間の無駄です。

1

Blenderは、OpenGLで完全に書かれたGUIを使って私が知っている唯一のアプリです... 唯一の問題はC++です。

私もPythonの開発者ですが、私はちょうど私が正直にOGLでGUIを開発する任意のツールキットがあるとは思わないOGL

を使用してになりそうだ...

http://pyopengl.sourceforge.net/documentation/manual/reference-GLUT.html

:ここ PyOpenGLの機能上のドキュメントのビットです:

EDIT)は、ブレンダーの開発者は私ではなく、直接援助のマニュアルを参照して言い逃れ与えている... しかし、私はあなたが私が把握何を知ってもらおう10

-1

私の友人。私はあなたの答えを発見したと信じて
;私がやりなさい)
http://glinter.sourceforge.net/

はまだそれを試してみましたが、それはかなり有望と思われます。 (それが動作しない場合、私はこれを編集します)

EDIT:
えっ...
それはTkの、PMW、およびWX ...
(なく、かなり私が欲しいもの)

を使用しています

あなたはCVSの試みをダウンロード与えることができます...
(そこにはリリースされたパッケージはませんが、CVSの実行)

0

cegui」が発生する「CEED」と呼ばれるGUIエディタもある良い一品ですレイアウトXMLファイル。また、多くのゲームエンジンでよく使われているpythonバインディングもあります。