es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

PyQt5: Sobreponiendo cursor del mouse y estableciendo un Qwidget transparente para la entrada conjunta.

Estoy tratando de escribir una aplicación sencilla en PyQt5 con un QWidget que tenga los siguientes dos comportamientos:
1. Sobrescribe el cursor del mouse
2. Transparente para la entrada; lo que significa que puede ignorar las entradas del mouse y enviarlas al widget de fondo o a la interfaz de usuario del sistema operativo (es decir, como un comportamiento superpuesto)

Puedo lograr cada comportamiento individualmente, es decir, cuando los combino, el cursor vuelve a su estado predeterminado (es decir, pierdo la capacidad de sobrescribirlo).

Me pregunto si esto es posible en QT?

from PyQt5 import QtCore
from PyQt5.QtWidgets import QApplication, QWidget

if __name__ == '__main__':
    import sys

app = QApplication(sys.argv)

# Objetivo nº 1: sobrescribir el cursor del mouse
QApplication.setOverrideCursor(QtCore.Qt.WaitCursor)
w = QWidget()
w.setWindowOpacity(0.1)

# Objetivo nº 2: hacer que el widget sea transparente para la entrada
w.setWindowFlags(w.windowFlags() 
| QtCore.Qt.WindowTransparentForInput | QtCore.Qt.WindowStaysOnTopHint)

w.resize(900, 900)
w.show()
sys.exit(app.exec_())
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, no es posible lograr ambos comportamientos juntos en PyQt5, ya que establecer un widget como transparente para la entrada significa que no puede recibir ningún evento del mouse en absoluto, incluido el comportamiento de anulación del cursor del mouse. Esto se debe a que cuando un widget es transparente para la entrada, es esencialmente “invisible” para los eventos del mouse.

    Una posible solución alternativa podría ser crear un widget de superposición separado con el comportamiento de anulación del cursor del mouse y hacer que se sitúe por encima del widget principal con el comportamiento de entrada transparente. De esta manera, los dos comportamientos se logran por separado pero parecen trabajar juntos según lo deseado. Sin embargo, esto puede no ser ideal para todos los casos de uso y puede requerir personalización adicional según los requisitos específicos de la aplicación.

Comments are closed.