問題タブ [gtkbuilder]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
widget - GtkBuilder から作成されたコンテナにウィジェットをプログラムで追加するにはどうすればよいですか?
いくつかのコンテナとウィジェットを含むウィンドウを作成しました。このウィンドウの Vbox の 1 つに実行時に新しいウィジェットを動的に追加したいと考えています。したがって、ウィンドウを表示する次のコードがあります。
次に、たとえば新しいラベルを作成し、次のように「vbox_mid」という名前の既存の Vbox の 1 つに追加します。
しかし、これはうまくいかないようです。vbox に新しいラベルが表示されません。ここで何かが足りない気がしますが、それが何であるかわかりません。おそらく、ウィジェットを動的に追加するための特別な GtkBuilder 呼び出しがあると思いましたが、そのようなものは何も表示されません。これについて何か助けていただければ幸いです。
python - Python Glade GTKBuilder チェックボタン
GTKBuilder チェックボタンがチェックされているかどうかを確認するにはどうすればよいですか?
gtk - glade/Gtkbuilderでカスタムウィジェットを使用する
私はGtkとGladeでアプリケーションを開発しています。私の印象では、メインウィンドウ用にGtkWindowのサブクラスを作成するのが一般的ですが、GtkBuilder定義からサブクラスを構築する方法に固執しています。誰かが方法を知っていますか?
gtk - gtkbuilder アプリを「親」の gtkbuilder フレームにロードできますか?
Glade-3 を使用して Gtk アプリケーションのスイートを構築しています。
アプリケーションは共通のルック アンド フィールを持つことになっているため、すべてのアプリが共有する共通の「フレーム」を決定しました。これには、メニュー バー、ツールバー、ステータス バー、垂直パネルが含まれます。各アプリケーションによって記入される中央のスペース。
この共通の「フレーム」は、Glade-3 を使用して設計され、Gtkbuilder 形式で保存されます。
私がやりたいのは、Glade-3 を使用して各アプリケーションの「中間部分」を設計し、それを何らかの方法で親フレームにロードすることです。
そのようなことは可能ですか?Gtk で親フレームを書き直すことはかなり単純なので気にしません。主な肉は、Glade を使用して確実に設計したいアプリケーション固有の詳細にあります。
Gtkbuilder ファイルを読み取り、それを親ウィジェットに貼り付けた結果を何らかの形で取得する方法は見たことがありません。
Perl/Gtk2 を使用しています。
c - gtk+ と glade で生成された .glade ファイルの c コード
私はgtk +プログラミングの分野では初めてです。私はまだ使用する多くのオプションを検討しています。C言語でコーディングしていきます。次の質問があります。
- どちらが良いですか?コードを書くか、glade によって生成された .glade ファイルを使用しますか?
- どちらを使うのが良いですか?libglade または gtkbuilder?
- glade2 でビルド オプションを使用することが推奨されないのはなぜですか?
gtk - 私はグレード gtkbuilder と接続信号で明らかな何かを欠いています。ヘルプ?
私はグレードで私のインターフェースを作ります。よく働く。私は、gtkbuilder を呼び出してグレード ファイル内のすべてをレンダリングする小さな小さなメイン関数を作成します。
さらにうまく機能します。次に、ウィジェットを取得します
それで?シグナルハンドラを接続するために私が見つけたすべての例は、gtkbuilder によってビルドされたものではありません。独自のクラスをインスタンス化してボタンを表現/処理/レンダリングする場合、シグナル ハンドラーをボタンに接続するのは簡単ですが、私は gtkbuilder を使用しており、ウィジェットにアタッチできる関数を作成する方法がわかりません。ボタン オブジェクトを作成したのは私ではなかったので、gtkbuilder が作成しました。
gtkbutton のサブクラスに関数を記述させてから、それを指すようにしますか? しかし、私のクラスは gtkbuilder によってインスタンス化されていません。
私はそれを理解していません。ヘルプ?
c - gtk についてのダイアログ ボックスをロードするときにアサーションの失敗を回避するにはどうすればよいですか?
私はグレードと gtk を使用してソフトウェア GUI をプログラムしました。メイン ウィンドウにはAboutボタンがあります。ボタンを初めてクリックすると、GtkAboutDialogBoxが完全に実行されます。アクション領域はイベントに正しくバインドされています。しかし、それを閉じて(メインウィンドウから終了せずに)aboutダイアログを開こうとすると、何も表示されません。さらに、システムはそうします
シェルに。このコードの何が問題なのですか?
私はgtkbuilderを使用しています。どうすれば修正できますか?
python - GtkBuilderでgladeファイルからウィジェットツリーを再利用するにはどうすればよいですか?
gtk.notebookをオンザフライで入力したい。ユーザーがファイルを開くたびに、新しいノートブックタブが生成されます。かなり簡単です。私の問題は、グレイドを使用してUIを構築し、ノートブックタブに子ウィジェットツリー(スクロールウィンドウ->ビューポート->配置->フレーム)が必要なことです。私のglade-fileには、テンプレートのnotebook-tabがあり、これを複数回使用したいので、ツリー全体をプレーンなgtkでコーディングする必要はありません。libgladeを使用すると、pygtkのよくある質問http://faq.pygtk.org/index.py?file=faq22.011.htp&req=showで説明されているようにウィジェットツリーを再利用できます。GtkBuilderでこれを行うにはどうすればよいですか?
前もって感謝します、
アーサー
python - pygtk gtk.Builder.connect_signalsを複数のオブジェクトに?
libgladeの使用からGtkBuilderにいくつかのコードを更新しています。これは、将来の方法になると思われます。
gtk.gladeglade_xml.signal_autoconnect(...)
を使用すると、プログラム内のさまざまなウィンドウに対応するさまざまなクラスのオブジェクトに信号を接続するために繰り返し呼び出すことができます。ただしBuilder.connect_signals
、1回だけ機能するようであり、(したがって)渡された最初のクラスで定義されていないハンドラーについて警告を出します。
手動で接続できることはわかっていますが、これは少し面倒なようです。(または、getattrハッカーを使用して、プロキシを介してすべてのオブジェクトに接続できるようにすることもできます...)
複数のオブジェクトにハンドラーを接続する機能がないのはバグですか?それとも私は何かが足りないのですか?
他の誰かが同様の問題を抱えていますhttp://www.gtkforums.com/about1514.htmlこれは、これができないことを意味すると思います。
python - PyGTK / Gtkbuilderとのダイアログを繰り返し表示するにはどうすればよいですか?
ユーザーがボタンを押すとダイアログを表示するPyGTKアプリケーションを作成しました。ダイアログは私の__init__
メソッドにロードされます:
イベントハンドラーでは、ダイアログはコマンドで表示されますが、ダイアログが自動的に破棄されself.myDialog.run()
た後、これは1回だけ機能します。run()
ボタンをもう一度クリックすると、アプリケーションがクラッシュします。
show()
ダイアログが破棄されない場所の代わりに使用する方法があることを読みましたがrun()
、ダイアログをモーダルに動作させ、ユーザーの後にのみ制御をコードに戻したいので、これは私にとって正しい方法ではないと感じていますそれを閉じました。
run()
gtkbuilderを使用するメソッドを使用してダイアログを繰り返し表示する簡単な方法はありますか?gtkbuilderを使用してダイアログ全体をリロードしようとしましたが、実際には機能していないようで、ダイアログにはすべての子要素がありませんでした(プログラムの開始時に、ビルダーを1回だけ使用する必要があります)。
[解決策](編集)
以下の回答で指摘されているように、を使用hide()
するとトリックが実行されます。「delete-event」をキャッチする必要があると最初は思っていましたが、実際には必要ありません。動作する簡単な例は次のとおりです。