Я думаю, что поиск другого виджета может оказаться более трудоемким, чем он того стоит. Если вы посмотрите здесь на реализацию, на самом деле они просто переопределяют event
vfun c, чтобы открыть меню.
vfunc_event(event) {
if (this.menu &&
(event.type() == Clutter.EventType.TOUCH_BEGIN ||
event.type() == Clutter.EventType.BUTTON_PRESS))
this.menu.toggle();
return Clutter.EVENT_PROPAGATE;
}
Если вы подклассифицировали себя и не Если вам не нужно меню, вы можете просто сделать то же самое, просто переопределив виртуальную функцию следующим образом (просто поместите это в свой подкласс как обычную функцию):
vfunc_event() {
if ((event.type() == Clutter.EventType.TOUCH_BEGIN ||
event.type() == Clutter.EventType.BUTTON_PRESS))
GLib.spawn_command_line_async("my_app");
return Clutter.EVENT_PROPAGATE;
}
Однако вы можете изменить события BUTTON_RELEASE
и TOUCH_END
, так что это происходит, когда пользователь отпускает кнопку , давая им возможность изменить свое мнение, перетаскивая мышь.