GTK4 は PyGObject ばかりやっていたけど。
たまには Gjs もやろうかなって、gir なのは同じなんだけど。
gjs/gtk4-template.js at master ? GNOME/gjs ? GitHub
あれ?
GtkApplication を使わないでイケる方法があったんだ。
同様なはずなので PyGObject で書いてみる。
#!/usr/bin/env python3 import gi gi.require_version('Gtk', '4.0') from gi.repository import Gtk, GLib class TestWindow(Gtk.Window): def __init__(self): Gtk.ApplicationWindow.__init__(self) btn = Gtk.Button(label='The best camera for wild birds') btn.connect('clicked', self.on_button_clicked) self.label = Gtk.Label(label='...') box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) box.append(btn) box.append(self.label) self.set_child(box) #self.connect('delete-event', self.on_close_request) # v3 self.connect('close-request', self.on_close_request) self.present() def on_button_clicked(self, widget): self.label.set_text('MICRO FOUR THIRDS !') def on_close_request(self, widget): loop.quit() loop = GLib.MainLoop.new(None, False) #GLib.set_prgname('LUMIX') TestWindow() loop.run()
GMainLoop でも良かったようです、知らなかった。
でも何故かこの方法ではタイトルバーに何も表示されないね。
アプリ名表示は使っていないはずの GtkApplication になる、なんだかな。
ウインドウを作る前に g_set_prgname すればいいんだけどさ。
GtkApplication を使えば今までどおりファイル名が表示される。
いや application-id を指定するとそちらが優先されるみたい。
g_set_prgname 無指定の場合だけの話ですけど。
close-request は delete-event の名前が変わっただけです。
×ボタンを押したよってシグナル、destroy は破棄されたよってシグナル。
GtkApplication を使う場合はこんな処理いりませんからね。
しかしのんびりしている間に GNOME 41 が出てしまった。
Multitasking って GSettings で変更できていたジャン。
GUI 設定が付いただけ、いや筆者はデフォルトで使うけど。
それよりランチャを左に戻す設定が欲しい、macOS でも左にしているんだ。
ちなみに普段は隱して三本指スワイプでランチャを出す GNOME3 式で使っている。
GTK の stable は 4.2.1 か、こっちは今までどおり奇数が開発版なのか。
でもドキュメントは 4.5 かよ、バージョンの関連性がもうよくワカラン。
関係ないけどサンプルコードでカメラネタはやっぱりイマイチだ。
やっぱりスズキのバイクが一番だなって。