As I mentioned in the previous post, I think I found a way to accurately align widgets with GtkCheckButton labels, though I have no idea if it's the easier way.
Basically, these are the GtkCheckButton style properties that define the left distance:
So all you need to do is set the margin-left of child widgets to:
focus-line-width + focus-padding + indicator-size + 3 * indicator-spacing
If you want to adapt immediately when the GTK theme changes, then you also need to connect to the style-updated signal appropriately. Here is a custom widget that gets the job done.
from gi.repository import GObject, Gtk
class CheckGroup(Gtk.VBox):
def _on_checkbutton_style_updated(self, widget):
value = GObject.Value()
value.init(GObject.TYPE_INT)
widget.style_get_property('focus-line-width', value)
margin = value.get_int()
widget.style_get_property('focus-padding', value)
margin += value.get_int()
widget.style_get_property('indicator-size', value)
margin += value.get_int()
widget.style_get_property('indicator-spacing', value)
margin += 3 * value.get_int()
self.group.set_margin_left(margin)
def __init__(self, checkbutton):
checkbutton.connect('style-updated', self._on_checkbutton_style_updated)
self.group = Gtk.VBox(homogeneous=False, spacing=6)
self.group.show()
super(CheckGroup, self).__init__(homogeneous=False, spacing=6)
self.pack_start(checkbutton, False, False, 0)
self.pack_start(self.group, False, False, 0)
self.show()
No comments:
Post a Comment