However, there is yet so little documentation, and only an example in C by gtk3-demo, so I have needed some time to get it working on Python, and this is why I am posting about this.
from gi.repository import Gtk def on_click(button): #Toggl if popover.get_visible(): popover.hide() else: popover.show_all() #Creating the window window = Gtk.Window(title="Hello Popover") window.connect("destroy", lambda w: Gtk.main_quit()) #Creating and placing a button. box = Gtk.Box(spacing = 60) button = Gtk.Button("Toggle popover") button.connect("clicked", on_click) box.add(button) window.add(box) #Creating a popover popover = Gtk.Popover.new(button) popover.set_size_request(50,100) label = Gtk.Label("Hi!") popover.add(label) window.set_size_request(200,200) window.show_all() Gtk.main()
So, here is what I have been missing.
Firstly, popover = Gtk.Popover(); popover.set_parent(button) does not work.
Secondly, popover does not show up, if there is not enough space in window (it actually does, but is not visible). This is why the button is wrapped in a box in this example.
Lastly, if the content is smaller than the arrow, so will the popover be, which looks ugly, so you may want to set a size request if there is only one label in the popover. However, I can not think of any practical reason to create a popover with a single label in it.