Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt,单击Qwidget上的操作_Python_Qt4_Click_Pyqt - Fatal编程技术网

Python PyQt,单击Qwidget上的操作

Python PyQt,单击Qwidget上的操作,python,qt4,click,pyqt,Python,Qt4,Click,Pyqt,我有一个简单的问题,我可以抓取点击按钮的事件,但现在我需要处理一个小部件上的点击,下面是部分代码: self.widget = QtGui.QWidget(self) self.widget.setStyleSheet("QWidget { background-color: %s }" % color.name()) self.widget.setGeometry(150, 22, 50, 50) self.connect(???) 好吧,我应该在里面放什么???要在创建的小部件上获取单击操

我有一个简单的问题,我可以抓取点击按钮的事件,但现在我需要处理一个小部件上的点击,下面是部分代码:

self.widget = QtGui.QWidget(self)
self.widget.setStyleSheet("QWidget { background-color: %s }" % color.name())
self.widget.setGeometry(150, 22, 50, 50)
self.connect(???)
好吧,我应该在里面放什么???要在创建的小部件上获取单击操作?
高级感谢

请改用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_()
你可以试试这个 我发现这对我来说很好

self.widget.mouseReleaseEvent=self.myfunction

最后一个例子是我自己写的,其余的都提到了。
最后一段代码帮助您传递任何变量,例如:小部件名称或小部件编号(如果存在多个小部件)。

这太棒了!就像做梦一样。@Ja8zyjits最后一个似乎对我不起作用。我认为默认情况下,
mouseReleaseEvent
只传递事件。您认为我必须重写小部件的
mouseReleaseEvent
来传递额外的参数吗?在当前形式中,它表示
TypeError:()缺少一个必需的位置参数:“my_variable”
@Tanvir,我相信我们正在为
mousereleasevent
分配一个新的定义,并且我们正在传递必需的变量。这是在注册事件时完成的。@Ja8zyjits还有其他方法发送var吗?
self.widget.mouseReleaseEvent=lambda event:print 'working'
self.widget.mouseReleaseEvent=lambda event,my_variable:self.myfunction(event,my_variable)