2010-01-03 8 views
7

J'ai ce problème simple, je peux saisir l'événement d'un clic sur le bouton, mais maintenant je dois gérer un clic sur un widget, voici une partie du code:PyQt, cliquez sur l'action Qwidget

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

bien, que dois-je mettre dans le ??? saisir une action de clic sur le widget créé? merci à l'avance

Répondre

6

Utilisez mousePressEvent à la place.

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

vous pouvez essayer cette j'ai trouvé ce billet depuis this blog site's comment box from Jared Glass Il fonctionnait très bien pour moi

self.widget.mouseReleaseEvent=self.myfunction 

ou

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

ou

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

seul le dernier examen C'est ce que j'ai écrit sur mon propre repos tous ont été mentionnés dans http://popdevelop.com/2010/05/an-example-on-how-to-make-qlabel-clickable/. Le dernier code vous aide à passer toutes les variables, par exemple: le nom du widget ou le numéro du widget si plusieurs widgets existent.

+0

C'est génial! Fonctionne comme un rêve. –