Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Presionar botón con tecla Enter en pyQt5
#1
Buenas tardes. Estoy tratando de ejecutar un slot cuando tengo un botón en foco y pulso la tecla Enter, pero no doy con la solución. ¿Alguien me puede ayudar?

Gracias de antemano!
Responder
#2
Hola, bienvenido.

Sí, podemos ayudarte, pero para eso es necesario que nos muestres el código que te genera problemas.

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#3
(30-05-2021, 12:13 AM)Francisco escribió: Hola, bienvenido.

Sí, podemos ayudarte, pero para eso es necesario que nos muestres el código que te genera problemas.

Saludos
Hola, Francisco. Lo primero, mil gracias por la velocidad en la respuesta. Pongo el trozo de código y trataré de explicarme:

Código:
def keyPressEvent(self, event):
    # QtCore.Qt.Key_Enter hace referencia a la tecla INTRO/ENTER del teclado numérico por norma general, debes usar en su lugar QtCore.Qt.Key_Return:
    if event.key() == QtCore.Qt.Key_Return:
        print("pressed")

    if event.key()==Qt.Key_Return:
        wfocus = QApplication.focusWidget() # obtenemos el widget que tiene el focus
        print(wfocus.objectName()) # lo imprimo en consola
        # wfocus.objectName() -> devuelve el nombre del widget enfocado
        print(self.boton_cargar_trabajos.hasFocus()) # lo imprimo en consola
        if wfocus.objectName() == self.boton_cargar_trabajos.objectName():
            print("Aquí necesito lanzar la función "def fn_ver_de_tabla(self):" programada más abajo") 



def fn_ver_de_tabla(self):
...

Necesito lanzar la función fn_ver_de_tabla cuando, teniendo en foco el botón self.boton_cargar_trabajos, pulso la tecla ENTER. A parte, tengo el evento clicked programado de dicho botón, pero no doy en como programar el evento pulsar una tecla y realice el mismo trabajo que pulsando la tecla del ratón.

No sé si me he explicado. Gracias de antemano y si necesitas alguna otra aclaración no tienes nada más que indicarmelo.
Responder
#4
Hola. Va por buen camino lo que hiciste, no sé cuál será el error que estás obteniendo. Pero podrías crear un botón genérico como el siguiente que ante la presión de la tecla Enter llama a la función que está asociada con el evento "clicked".

Código:
class EnterButton(QPushButton):
    
    def keyPressEvent(self, event):
        if event.key() == Qt.Key_Return:
            self.clicked.emit()
        return super().keyPressEvent(event)

Luego lo usarías así:

Código:
self.button = EnterButton("Texto del botón", self)
self.button.move(20, 60)
# Esta función se usará tanto para el clic como para el Enter.
self.button.clicked.connect(self.fn_ver_de_tabla)

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)