2010-08-11 52 views
5

Estoy tratando de simular un evento de clic de mouse en Python en el widget ui.goButton.Simulando un evento de clic de mouse en PyQt

Esto es lo que hice:

QtTest.QTest.mouseClick(self.ui.goButton, QtCore.Qt.LeftButton) 

es esta la forma correcta de hacerlo? Porque no está funcionando.

+0

No creo haber entendido lo que quiere decir con 'simular'? ¿Desea manejar el evento de clic de mouse o desea generar un evento de clic de mouse? – liaK

+1

@liaK: Quiero generar un evento de clic del mouse, es decir, quiero que se envíe el botón 'SIGNAL (" clicked() ")', sin que el usuario realmente haga clic en él. – Vilfrin

+0

¿Estás probando o quieres que tu aplicación realmente funcione de esa manera? –

Respuesta

5

Según su respuesta al comentario, responderé a su pregunta.

Básicamente señales pueden ser emiten por,

emit signalToBeEmitted() 

Por lo tanto, si desea emitir la señal de la QPushButton 's clicked(),

que tienen que heredar el QPushButton y se puede emitir la señal como emit clicked().

This example le ayudará a emitir las señales.

Pero mi pregunta es ¿por qué quieres hacer eso?

Mediante la emisión de la señal clicked(), tendrá a su vez llamar la ranura connect ed .. ¿Por qué no se puede llamar a la ranura directamente por sí mismo en lugar de emitir la señal y luego llamar a la ranura ..

Recuerde slots son solo las funciones ordinarias que se pueden llamar igual que otras funciones.

O bien, si la ranura está presente en otro objeto que se conectará a través de la señal, entonces emitirá su propia señal en lugar de estropearla con las predefinidas.

en mi humilde opinión, No emiten tales señales predefinidas, incluso para el más corto plazo ..

creo que sirve ..

Editar:

Vaya No vi la PyQt. Estoy acostumbrado a Qt con C++. No sé nada de Python. Pero creo que la mayoría de los conceptos de Qt seguirán siendo comunes. Así que voy a dejar mi respuesta como tal ..

+0

El comportamiento descrito por liaK también es válido para PySide ... –

+1

Si bien esta es probablemente la respuesta correcta para la pregunta específica de las respuestas, necesito simular un verdadero evento de clic de mouse para poder pasar un clic a un widget bajo el mouse en un QStyledItemDelegate. Me encontré con esta pregunta mientras miraba hacia allí.Estoy de acuerdo con la respuesta, pero creo que mi necesidad sigue siendo una historia de usuario válida. Vale la pena agregar esto a esta respuesta IMO. Puede ser tan simple como ejecutar mousePressEvent con una instancia de evento construido, pero todavía no estoy seguro ... – Rafe

Cuestiones relacionadas