2010-01-03 39 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

这太棒了!像梦一样工作。 – 2017-06-02 04:24:13