2010-01-03 1 views
7

Я это простая проблема, я могу захватить событие нажатием на кнопку, но теперь мне нужно обработать щелчок над виджетом, вот часть кода:PyQt, нажмите действия на QWidget

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

ну, что я должен положить в ??? захватить действие щелчка над созданным виджетами? благодарственное в пожилом

ответ

6

Использовать обычные mousePressEvent вместо этого.

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

вы можете попробовать это я нашел, что это из this blog site's comment box from Jared Glass Он работал отлично для меня

self.widget.mouseReleaseEvent=self.myfunction 

или

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

или

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

только последний экзамен это то, что я написал на собственном отдыхе, все были упомянуты в http://popdevelop.com/2010/05/an-example-on-how-to-make-qlabel-clickable/. Последний код поможет вам передать любые переменные, например: имя виджета или номер виджета, если существует несколько виджетов.

+0

Это потрясающе! Работает как сон. –