¿Cómo puedo adjuntar un evento "hecho clic" a una etiqueta? Probé GtkEventBox pero no tuve suerte con eso.Adjuntar evento de doble clic a una etiqueta
Respuesta
Conéctese a la señal button-press-event
en el EventBox.
Conéctese a la señal de botón-evento de presión, pero directamente en la etiqueta Gtk. Diría que no necesitas un Eventbox aquí, ya que GtkLable hereda ya esta señal de GtkWidget. Para habilitar GtkLabel para recibir esos eventos, primero debe llamar al gtk_widget_set_events o gtk_widget_add_events, y agregar la sensibilidad al evento GDK_BUTTON_PRESS_MASK.
No todos los widgets GTK pueden recibir eventos. 'GtkLabel' es uno de esos, que deben estar envueltos en un cuadro de evento. Véase, por ejemplo, esta pregunta de PyGTK FAQ: http://faq.pygtk.org/index.py?query=eventbox&querytype=simple&req=search – ptomato
Sin embargo, el bit sobre la máscara GDK podría ser útil para otros widgets. –
Gtk # diferencia entre Widgets y 'Contenedores'. La mayoría de los widgets colocados en un formulario Gtk # NO recibirán eventos de clic del mouse. Con el fin de recibir un evento de ratón que necesita para colocar el widget en el interior de un contenedor específico - como EventBox:
Añadir un containter EventBox a su formulario. Puede colocarlo detrás de otros widgets o dado que no está visible, a menos que lo seleccione específicamente (o cambie el color de fondo).
Ponga su widget de etiqueta dentro de este EventBox. Tenga en cuenta que la etiqueta obtendrá la forma y el tamaño de EventBox.
Agregue a este EventBox la señal 'ButtonPressEvent' fuera de las "Señales comunes de widgets".
Si es necesario identificar el botón que se ha hecho clic durante la manipulación de este evento, utiliza el valor uint en: args.Event.Button típicamente '1' será el botón izquierdo del ratón, '2' el botón central y '3' el botón derecho ('2' podría ser también cuando se hace clic en los botones izquierdo y derecho).
Parece que no necesita EventBox en absoluto: dado que el problema es que las etiquetas no tienen ninguna ventana X11 asociada, ¡simplemente proporciónela con set_has_window(True)
! Las siguientes obras para mí:
self.label = Gtk.Label()
self.label.set_has_window(True)
self.label.set_events(Gdk.EventMask.BUTTON_PRESS_MASK)
self.label.connect("button-press-event", self.click_label)
El documentation dice que sólo se debe utilizar para la implementación de los widgets - pero bueno, funciona. ¿A quién le importa "debería"?
- 1. C# Listbox Elemento Doble clic Evento
- 2. Recibiendo el evento de doble clic
- 3. Evento de doble clic en android
- 4. jquery <a> etiqueta, haga clic en evento
- 5. Emular el evento de doble clic en Datagrid con touchDown
- 6. Agregar Evento de doble clic en la celda CellTable - GWT
- 7. Implementando el evento de doble clic en Silverlight 4 Datagrid
- 8. evitar la 'doble acontecimiento' cuando se hace clic ETIQUETAS dentro de un elemento con un evento de clic
- 9. Interceptar clic simple o doble del mouse - solo ejecutar doble clic en el código al hacer doble clic
- 10. Evento de doble clic en la opción de cuadro de lista no activada en IE
- 11. .NET: haga doble clic en evento en TabControl
- 12. ¿Cómo puedo adjuntar un comportamiento personalizado con un doble clic en jsTree?
- 13. Hacer doble clic en un evento en el elemento JList
- 14. Necesita cancelar eventos de clic/mouseup cuando se hace doble clic en evento detectado
- 15. Usando backbonejs view, ¿cuál es la mejor manera de adjuntar un evento "onload" a una etiqueta de imagen?
- 16. Resaltado con doble clic
- 17. Añadir evento de clic a document.createElement ("th")
- 18. agregando un evento de clic a fullcalendar
- 19. Javafx 2 haga clic y haga doble clic
- 20. WPF doble clic TreeViewItem Nodo filial
- 21. Animación jQuery: Ignorar haga doble clic
- 22. "Adjuntar al proceso" como un evento posterior a la construcción
- 23. Javascript adjuntar un evento onclick a todos los enlaces
- 24. Capturando todos <a> clic evento
- 25. WPF ListBoxItem haga doble clic en?
- 26. identificando doble clic en java
- 27. jQuery "post-clic" evento
- 28. Jquery clic evento propagación
- 29. Adjuntar a una cadena existente
- 30. Salir/deshabilitar el modo de edición después de hacer doble clic en evento manejado
¿Por qué presionar el botón? El creador del hilo habla sobre el clic del mouse, no sobre el botón – fnc12
Oh ny bet. Parece que presionar el botón significa que el botón del mouse. Lo siento – fnc12
En mi prueba, las etiquetas parecían consumir 'button-press-event'; No tuve problemas para usar la señal en otros widgets; : \ Weird.Otros comentarios sugieren que Gtk.EventBox es necesario para las etiquetas. – ThorSummoner