32

私はしばらくの間Pythonを学んでいて、ある程度の成功を収めています。PyGtk + Gladeを使用して1つまたは2つの(単純な)プログラムを作成することさえできました。

問題は、PythonでGTKを使用する最良の方法が、Gladeを使用してインターフェースを構築することであるかどうかはわかりません。

私たちの中で経験豊富な人(私は初心者であることを忘れないでください)が、コード自体にすべてを作成するのではなく、Gladeを使用することの利点と警告を指摘できるかどうか疑問に思っていました(正しいgtkバインディングを学習することはできないと仮定します)まさに問題になる)。

4

11 に答える 11

20

それは場合によると思います.Gladeを使用して、必要なアプリまたは作成する必要のあるアプリを構築できることがわかった場合、それはまったく問題ありません. ただし、実際に GTK がどのように機能するかを知りたい場合や、非標準の UI 要件がある場合は、GTK 内部 (それほど複雑ではありませ) を掘り下げる必要があります。

個人的には、 Glade やSteticなどのデザイナーでは不可能な機能やカスタマイズが必要な場合は、通常、リッチ クライアントに約 5 分かかります。おそらくそれは私だけです。それにもかかわらず、グラフィカル ツールを使用してウィンドウ デザインをブートストラップすることは、私にとって依然として役に立ちます。

私の推奨事項: GTK を使用してリッチ クライアントを作成することが仕事/趣味の重要な部分になる場合は、いつかそのコードを記述する必要があるため、GTK も学習することをお勧めします。

PS個人的には、設計作業に関してはSteticの方がGladeよりも優れていると思いますが、もう少し不安定です。

于 2008-09-07T20:09:47.990 に答える
12

Gladeの代わりにGtkBuilderを使用してください。これは、個別のライブラリではなくGtk自体に統合されています。

Gladeの主な利点は、インターフェースの作成がはるかに簡単になることです。シグナルハンドラーを接続するのは少し手間がかかりますが、それがそれほど重要だとは感じたことはありません。

于 2008-09-07T04:20:06.663 に答える
5

Gladeはインターフェースの作成に非常に役立ちます。つまり、多くのコーディングを行わなくてもGUIを簡単に変更できます。何か便利なこと(ツリービューの作成など)を行う場合は、GTKドキュメントのさまざまな部分に精通している必要があります。実際には、優れたチュートリアル/例を見つける必要があります。

于 2008-09-10T15:04:33.970 に答える
5

私はグレードを使い始めましたが、すぐにすべてをコードで行うようになりました。Glade は単純なものに適しています。また、GTK がウィジェットをどのように編成するか (物事がどのようにパックされるかなど) を学習している場合にも適しています。ただし、すべてをコードで構築すると、柔軟性が大幅に向上します。さらに、空き地への依存関係はありません。

于 2008-09-20T03:04:01.877 に答える
4

GTK+ の多くの標準コンポーネント (ボタン、ラベル、コンテナーなど) を再利用する従来の GUI アプリケーションを作成している場合、個人的には Glade + Kiwi (GTK+ GUI アプリケーションを構築するための便利なフレームワーク) を使用します。

Glade を使用する最大の利点は、レイアウト/パッキング コードが大幅に削減されることです。これは非常に単純な例ですが、(ヘルパー関数を使用せずに) GUI を手動でレイアウトする際の問題を既に示しています。

container = gtk.HBox()
label = gtk.Label(str="test")
container.add(label)

その他の例については、こちらをご覧ください。複雑なカスタム ウィジェットを作成している場合でも、いつでも Glade でプレースホルダーを作成し、インスタンス化後に置き換えることができます。

Glade チームが新しいバージョンのデザイナー (3.6.0) をリリースするのにそれほど時間はかからないはずです。この新しいバージョンでは、libglade (Glade XML ファイルをウィジェット ツリーに変換する実際のライブラリ) を置き換える GtkBuilder のサポートが追加されます。また、新しい Glade デザイナーは、Python でカタログ (ウィジェットのセット) を定義するためのサポートを再び追加するため、独自のカスタム ウィジェットを簡単に追加できます。

于 2009-02-07T21:19:04.393 に答える
4

私は通常、ウィザードの作成など、必要な機能がなくなるまで Glade から始めます。Glade が提供する標準のウィジェットを使用している限り、GUI を手作業でコーディングする理由はまったくありません。

Glade がコードをフォーマットする方法に慣れれば慣れるほど、私のハンドコーディングはより良くなります。言うまでもなく、Glade を使用して基礎となるフレームワークを作成するのは非常に簡単なので、すべての初期化について心配する必要はありません。

于 2008-09-20T11:40:16.083 に答える
2

迅速な開発には Glade を使用することをお勧めしますが、学習には使用しないでください。なんで?場合によっては、一部のウィジェットを希望どおりに機能させるために調整する必要があるため、すべてのウィジェットのプロパティ属性を本当に知らない/理解していないと、問題が発生します。

于 2008-11-20T15:33:11.277 に答える
2

まず、これを視野に入れ始めます。

GTK を使用します。これは、1970 年代のコーディング スタイルの最高の伝統を使用して 1993 年に構築された巨大な C ライブラリです。これは、Photoshop の競合相手であり、伝説的なユーザー インターフェイスの大失敗をしたいという GIMP の実装を支援するために構築されました。典型的な gui フィールドには、getter と setter を持つ 40 以上のパラメータがあり、ほとんどが反復的です。痛みがあります。

GTK 自体は、GObject を使用して C で完全な動的型システムを管理します。これにより、暗黙的な継承を伴う一般的な引数リストでいっぱいのメソッドへのポインターの配列を手動で調べる必要があるデバッグが特別な喜びになります。また、ページが小さい場合にラベルのどこに省略記号を入れるかについて Pango 定数を使用するなど、まったく予期しないときに Pango ライブラリを介してジャンプすることになります。より多くの痛みを期待してください。

ここまでで、GTK インタラクションのすべてをアプリケーション固有の Model-View-Controller アーキテクチャにラップすることを誓ったことでしょう。これはいい。

Glade、または gtkBuilder、または Stetic を使用すると、コーラルは関数への 40 個のパラメーターの巨大な結合問題を解決できます。Glade は、コンポーネントを一緒にドラッグ アンド ドロップするための基本的な GUI ビルダーを提供します。パラメータと継承されたパラメータは多少分離されています。Glade の出力は .glade XML ファイルです。これを読み込んで、同じ名前の関数にコールバック (「シグナル ハンドラ」) をアタッチし、その XML のインメモリ バージョンをクエリまたは更新して、pyGTK を使用するウィジェットを取得します。操作する。空き地自体はきしみがあり、手入れが行き届いていません。

pyGTK を使用すると、GUI を構築するために面倒なほど細かい制御が可能になります。これは冗長なコピー アンド ペースト コードになります。各属性は個別の関数呼び出しになります。属性セッターは何も返さないため、呼び出しを連鎖させることは問題外です。通常、IDE は関数の意味について最小限のヘルプしか提供しないため、常に DevHelp やその他のツールを参照することになります。

GTK GUI は失敗することを意図しているとほぼ予想されるでしょう。

于 2010-01-27T17:45:36.557 に答える
1

個人的には、Glade を使用する代わりにコーディングすることをお勧めします。私はまだ python と pyGtk を学んでいますが、UI を手で書き出すことで、物事が内部でどのように機能するかについて多くの洞察が得られたと言えます。

習得したら、空き地や他のUIデザイナーに試してもらいたいと思いますが、最初は「難しい」方法でそれを行う方法を確実に学んでください.

于 2009-04-15T13:32:09.623 に答える
1

迅速でシンプルな画面には、Glade を使用します。しかし、より細かいレベルの制御が必要な場合は、実際に必要なものに合わせてカスタム クラスを作成します (これは重要です。一般化に夢中になりやすいためです)。

スキニー アプリケーション固有のクラスを使用すると、1 つの場所からアプリケーション全体のルック アンド フィールをすばやく変更できます。CSS を使用して Web サイトの一貫性を維持するようなものです。

于 2008-10-13T22:02:10.340 に答える
-1

glade-2 を使用して設計し、glade2py.py を使用て純粋な pygtk コードを生成できます。pygtkcompat を使用して gtk3 をサポートします。

于 2014-06-27T10:09:16.607 に答える