如何在Python中使用PyQt4为QLabel添加可点击事件?
我正在用pyqt4库做Python的图形界面,刚接触信号和槽的概念。我不知道怎么给标签名字叫QPLabel
添加事件。以下是我的代码:
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("Form"))
Form.resize(759, 598)
font = QtGui.QFont()
font.setPointSize(12)
...
...
...
self.QPLabel = QtGui.QLabel(Form)
self.QPLabel.setGeometry(QtCore.QRect(620, 420, 141, 20))
QtCore.QObject.connect(self.QPLabel, QtCore.SIGNAL(_fromUtf8("clicked()")), self.doSomething)
def doSomething(self):
print 'Label click'
有人能告诉我应该怎么做,才能在标签上添加事件来执行一些操作吗?
2 个回答
3
QLabel
这个组件没有一个叫 clicked
的信号,所以你可以选择以下两种方法:
A) 从 QLabel
创建一个自定义类,并为鼠标事件编写处理程序。
B) 在 Ui_Form
中实现事件处理程序,使用标准的 QLabel
,并将这个表单作为事件过滤器安装到标签上(self.QPLabel.installEventFilter (self)
)。
45
更新下面这一行:
QtCore.QObject.connect(self.QPLabel, QtCore.SIGNAL(_fromUtf8("clicked()")), self.doSomething)
改成:
self.QPLabel.mousePressEvent = self.doSomething
并且在 doSomthing
里添加 event
参数
...
def doSomething(self, event):
...