2010-01-03 23 views
7

He este sencillo problema, puedo agarrar el caso de un clic en el botón, pero ahora necesita para manejar un clic sobre un widget, aquí es parte del código:PyQt, haga clic en la acción Qwidget

self.widget = QtGui.QWidget(self) 
self.widget.setStyleSheet("QWidget { background-color: %s }" % color.name()) 
self.widget.setGeometry(150, 22, 50, 50) 
self.connect(???) 

bueno, ¿qué debería poner en el ??? para tomar una acción de clic sobre el widget creado? Gracias de avanzada

Respuesta

6

Uso mousePressEvent lugar.

import sys 

from PyQt4.QtGui import QWidget, QApplication 

class MyWidget(QWidget): 
    def mousePressEvent(self, event): 
     print "clicked" 

app = QApplication(sys.argv) 

widget = MyWidget() 
widget.show() 

app.exec_() 
9

puede probar esta he encontrado esto desde this blog site's comment box from Jared Glass estaba trabajando bien para mí

self.widget.mouseReleaseEvent=self.myfunction 

o

self.widget.mouseReleaseEvent=lambda event:print 'working' 

o

self.widget.mouseReleaseEvent=lambda event,my_variable:self.myfunction(event,my_variable) 

sólo el último examen ple es lo que he escrito sobre mi propio descanso, todos han sido mencionados en http://popdevelop.com/2010/05/an-example-on-how-to-make-qlabel-clickable/. El último código le ayuda a pasar cualquier variable, por ejemplo: nombre del widget o número de widget si existen varios widgets.

+0

¡Esto es asombroso! Funciona como un sueño –