11

アプリケーション内のウィジェットとして Pygame サーフェスをサポートする優れた GUI はありますか?

これが不可能または実用的でない場合、最高のグラフィックス コンポーネントを備えた GUI ツールキットはどれですか? SDL ラッパーによって可能になった高速なレンダリングを維持したいと考えています。

4

4 に答える 4

11

Pygame wikiのGUI セクションで説明されているように、wxPython を使用しないでください。Pygame とうまく連携させるのは非常に困難です。

まず第一に、pygame は SDL に依存しているため、一度に 1 つのウィンドウしか持てません。したがって、複数の Gtk、Qt、... pygame を使用するアプリケーション インスタンスを実装しようとすることは不可能です。2 つ目の問題となる理由は、これらのツールキットが独自のメイン ループを使用しているため、イベントを pygame インスタンスにパイプする必要があり、その逆も必要になる可能性があることです。他のいくつかのポイントを簡単に述べると、ツールキット要素を pygame ウィンドウに描画することは不可能であり、SDL/pygame フルスクリーン モードは問題になります。

代わりに、そのページの下部にリストされているライブラリのいずれかを選択してください。私はpguを自分で使用しています。

于 2010-01-27T12:01:54.833 に答える
6

AlbowPGU、またはOcempを見てください。

于 2010-01-26T22:07:13.283 に答える
4

Albow と Ocemp は積極的にメンテナンスされていません。PGU は現在、Peter Rogers によって保守されており、Victor Kam はそのほとんどを Python 3 に変換しました。

Python 3 で実行しようとした 5 つの pygame GUI ツールキットがあります: Albow、GooeyPy、PGU、pqGUI、および sgc。(私は GooeyPy を Python 3 で動作させませんでしたが、他のものは動作しました。)

それぞれのサイズを測定するために、単純な Lines-Of-Code カウンター http://code.activestate.com/recipes/527746-line-of-code-counter/でそれぞれを実行しました。

結果は次のとおりです。

Albow code        min=2810, max=4551    (max = 162% of min)
Albow\demo        min= 453, max= 649

GooeyPy\gooeypy   min=2034, max=3941    (max = 194% of min)
GooeyPy\examples  min= 178, max= 351

pgu\pgu           min=2910, max=7047    (max = 242% of min)
incl. pgu\pgu\gui min=1678, max=4638    (max = 276% of min)
pgu\examples      min= 822, max=2527

pqGUI.py          min=1586, max=1834    (max = 116% of min)
Example.py        min= 178, max= 225

sgc (incomplete)  min= 889, max=1243    (max = 140% of min)

(シャンディ・ブラウンのプーティンも試したかったのですが、見つかりませんでした。)

いずれの場合も、「最小」の数値は、空白やコメントをカウントしないため、ツールキットの「サイズ」をよりよく表しています。

「最大」数が最小数に非常に近い場合は、コード内に空白やコメントがあまりないことを意味します。pqGUI は、(IMO) 最も見栄えの良いウィジェットを作成するため、コメントがほとんどないため、これはあまりにも悪いことです。

pqGUI は、それが作成するウィジェットの外観が好きなので気に入りましたが、サポートも文書化もされておらず、作成者を見つけることができません。

5 つのうち、積極的に保守/開発されているのは PGU と sgc の 2 つだけで、sgc は新しく不完全です。

そのため、PGU は明確なリーダーとなっています。

デイブ


PS (2012 年 10 月 23 日) -- PyGame 用に独自の GUI ツールキットを作成しました。これはウィジェット ベースであり、通信に pygame イベントを使用するため、イベント ループを引き継ぐことなく、既存の pygame プログラムに簡単にドロップできます。フォーム、ボタン、ウィンドウ、モーダルおよび非モーダル メッセージ ボックスとダイアログ ボックス、垂直メニュー、テキスト入力ボックス、およびスライダー (スクロール バー) をサポートしています。重なり合うコントロールやフォーム内のフォームをスムーズに処理します。

ただし、実際には完全ではありません。ファイルを開くダイアログやテーブルなど、必要と思われるいくつかのコントロールが欠けています。存在するコントロールは見栄えがしますが、タイトル バーやスクロール バーなどの機能は、サイズ変更可能ではなく、幅がピクセル数に固定されています。コードは十分にコメントされており、使用例を含むデモ アプリがありますが、適切な使用方法のドキュメントはありません。また、プレベータ版であるため、すべてが変更される可能性があります。

これらの制限にもかかわらず、誰かがそれを試してみたい場合は、電子メールで私に連絡してください. 「DavesGUI」について質問します。私のメールアドレスはこちらです: http://www.burtonsys.com/email/

于 2011-01-17T17:28:40.287 に答える
1

ここでは、 と を統合して相互作用させる方法について説明しwxPythonますPygame

私の意見では、最良の GUI ツールキットはwxPython (wxWidgets のバインディング) です。これには、OpenGL ウィジェットを含む実質的にすべての GUI ウィジェットがあり、一部の作業は SDL でも行われています。

于 2010-01-26T22:03:20.930 に答える