はじめに
さあ、アドベントカレンダーなのですが、今日もネタがありません。
なので、ものすごく薄いネタでいこうと思います。
gtk4.cr を使ってウィンドウを表示するのをやります。
GTK4
まずはプロジェクトを作ります。
crystal init app piyo
cd piyo
設定ファイル shards.yml
を開いて、
vi shards.yml
依存 gtk4
を追加します。
+ dependencies:
+ gtk4:
+ github: hugopl/gtk4.cr
終わったら依存 gtk4
をインストールしましょう。
shards install
それではコードを編集していきます。
vi src/piyo.cr
module Piyo
とか VERSION
とか書いてありますが、今回は全部消して次のように書きました。
require "gtk4"
app = Gtk::Application.new("hello.example.com", Gio::ApplicationFlags::None)
app.activate_signal.connect do
window = Gtk::ApplicationWindow.new(app)
window.title = "🔮"
window.set_default_size(200, 200)
button = Gtk::Button.new_with_label("クリスタルの世界へ\nようこそ!!")
button.clicked_signal.connect do
button.label = "じゃんけんしましょう!\n\n" \
"#{["グー ✊", "チョキ ✌", "パー 🖐"].sample}"
end
window.child = button
window.present
end
exit(app.run)
ここで、さっそく
shards build
とすると、必ず次のようなエラーメッセージが出るので、
Error target piyo failed to compile:
Showing last frame. Use --error-trace for full trace.
In lib/gtk4/src/gtk4.cr:2:11
2 | GICrystal.require("Gtk", "4.0")
^------
Error: Bindings for Gtk-4.0 not yet generated, run ./bin/gi-crystal first.
言われるがままに ./bin/gi-crystal
を実行しましょう。
bin/gi-crystal
これで shards build
が通るようになります。
shards build
これで実行できます。
bin/piyo
テキトウに作っているので、あまりゲームになっている感じがしませんが、とりあえずクリックするたびにランダムで、グーチョキパーが表示されます。はい、Windowが表示されました。
GUIが表示されると、私は子供の頃憧れていた「ソフトウェア」を作れるようになったんだなぁという気持ちになります(個人差があります)。
こんな感じでとても簡単にできるので試してみてください。MacOSを使っている場合でも、homebrewなどでgtk4をインストールすればできるはずです。
この記事は以上です。