Rubyで書かれたフォトギャラリージェネレーターがあります。各フォト ギャラリーの構成とジェネレーター自体は両方とも 1 つの YAML ファイル内にあります。このツールはすでに端末ツールとして機能しています。ここで、これ用の GUI を作成したいと思い、GUI ライブラリとして Gtk を選択しました。 Glade で大まかな UI を作成し、Gtk::ApplicationWindow と Gtk::Application の両方のクラスを用意しました。 Ruby コードを実行すると、Glade で作成された UI が実際に読み込まれ、表示されます。現在、GTKTreeView の設定で少し行き詰まっています。ギャラリーを生成する前にユーザーが最後の調整を行うために構成データを表示するために使用したいと考えています。
これまでに持っているコードをプッシュしました — https://gitlab.com/lipoqil/static-photo-gallery-builder/-/compare/master…gui
C の例はたくさん見つかりましたが、それらは通常クラスを扱っていないため、私にとっては役に立ちません。
また、Glade を使用せず、Gtk クラスのインスタンスを手動で作成することで UI 全体をプログラム的に構築している Ruby の例も見つかりました。当然、それらのインスタンスは変数に参照を持っています。
Python で同様のことを行っているビデオをいくつか見つけましたが、それらはボタンにアクションをアタッチしているだけなので、UI の特定の要素への参照は必要ありませんでした。
GTKTreeView / GTKListStore への参照を取得してデータを入力するにはどうすればよいですか?
私が想像しているのは、何かに対して
.get_object(‘
「私が試したこと」からは明らかでない場合に備えて…C の例や、UI 全体がプログラムで実行される例を探しているわけではありません。
ChatGPT 4 に質問したところ、有効な答えが得られました。
私が探していたのはおそらく、bind_template_child でした。 Glade ビューから ID を指定すると、ウィンドウ クラスの初期化後にインスタンス変数になります。
module StaticPhotoGalleryGenerator
module GUI
class ApplicationWindow < Gtk::ApplicationWindow
type_register
class << self
def init
# Set the template from the resources binary
set_template resource: '/cz/rooland/static-photo-gallery-generator/ui/application_window.glade'
bind_template_child('config_store1')
bind_template_child('generate_button')
end
end
def initialize(application)
super application: application
puts @config_store1.inspect # #<Gtk::ListStore:0x00000001437d1998 ptr=0x0000600000de20b0>
end
end
end
end
これを回答としてマークしますが、人間がより良い解決策を思い浮かばなかった場合は、この質問を時々確認します ;)