代码之家  ›  专栏  ›  技术社区  ›  Zeb

使用pyqt4在python中的QLabel上单击事件?

  •  22
  • Zeb  · 技术社区  · 12 年前

    我正在使用pyqt4库和新的信号和插槽在python GUI中工作。我不知道如何将事件放在标签名称上 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 回复  |  直到 12 年前
        1
  •  44
  •   qurban    12 年前

    更新以下行:

    QtCore.QObject.connect(self.QPLabel, QtCore.SIGNAL(_fromUtf8("clicked()")), self.doSomething)
    

    收件人:

    self.QPLabel.mousePressEvent = self.doSomething
    

    并添加 event 参数到 doSomthing

    ...
    def doSomething(self, event):
    ...
    
        2
  •  3
  •   Hyperboreus    12 年前

    QLabel 没有信号 clicked ,因此可以执行以下操作之一:

    A) 从中派生自定义类 Q标签 实现鼠标事件的处理程序。

    B) 在中实现事件处理程序 Ui_Form ,使用标准 QLabels 并将该表单安装为标签的事件筛选器( self.QPLabel.installEventFilter (self) ).