GtkHeaderBar 付きの GtkWindow のリサイズ。
以前こんなことを書いた。
GTK+ 3.20 GtkHeaderBar and CSS | PaePoi
もう少し細かく判った。
#!/usr/bin/env python3
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
class Win(Gtk.ApplicationWindow):
def __init__(self, app):
Gtk.ApplicationWindow.__init__(self, application=app)
# Headerbar
self.headerbar = Gtk.HeaderBar(show_close_button=True)
self.set_titlebar(self.headerbar)
# Button
button = Gtk.Button(label="Click !!!")
button.connect("clicked", self.on_button_clicked)
self.add(button)
def on_button_clicked(self, button):
print(self.get_allocated_width(), self.get_allocated_height())
w, h = self.get_size()
print(w, h)
class App(Gtk.Application):
def __init__(self):
Gtk.Application.__init__(self)
def do_activate(self):
w = Win(self)
w.show_all()
app = App()
app.run()
get_allocated_* と get_size で値が違う。
ちなみに GtkHeaderbar を消すと同一の値になる。
見た目で解るけどクライアント領域のサイズですね。
window.get_size と window.resize が共通サイズになるようだ。
ということでサイズの保存にはコチラを使いましょう。
ついでに、GVariant.deep_unpack は Gjs でないと使えないのね。
Gjs も地味に便利にしているところがあったのね。
