Как сделать так, чтобы GTKOverlay не убирал ВСЕ взаимодействия из виджетов? - PullRequest
0 голосов
/ 15 марта 2020

У меня есть карта, которую я должен приписать, и я вижу, что GtkOverlay кажется правильным виджетом. К сожалению, я могу добавить метку, например, она отображается над виджетом карты ... но даже если метка не такая высокая, не настроена для заливки, она все равно удаляет все взаимодействия с карты ниже.

    overlay = Gtk.Overlay()
    overlay.add(self.osm)
    top_container = Gtk.VBox()
    btmlbl = Gtk.Label("(c) so and so");
    top_container.pack_end(btmlbl, False, False, 0)
    self.vbox.pack_start(overlay, True, True, 0)
    overlay.add(btmlbl)
    overlay.add_overlay(top_container)

Как сделать, чтобы наложение накладывалось только на одну метку, изображение для взаимодействия с кликом , только когда курсор находится на этом элементе ??

1 Ответ

0 голосов
/ 18 марта 2020

Ответ содержится в документации ...

    overlay.set_overlay_pass_through(container,True)
    overlay.set_overlay_pass_through(labelcontrol,False)

На самом деле, для labelcontrol это не нужно, если оно имеет настройку, позволяющую сделать его кликабельным:

    lbl.set_has_window(True)
    lbl.set_events(Gdk.EventMask.BUTTON_PRESS_MASK)
    lbl.connect("button-press-event",function)
...