如何在Python中使用PyQt4为QLabel添加可点击事件?

23 投票
2 回答
28137 浏览
提问于 2025-04-17 21:10

我正在用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):
...

撰写回答