clickable event on QLabel in python using pyqt4?

余生颓废 提交于 2019-12-20 20:40:10

问题


I am working in python GUI using pyqt4 library and new with signal and slots. I don't know how to put event on label name QPLabel. Here is my code :

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'

Anybody what should I do for event on label for doing some action.


回答1:


Update the following line:

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

To:

self.QPLabel.mousePressEvent = self.doSomething

and add the event parameter to doSomthing

...
def doSomething(self, event):
...



回答2:


QLabel doesn't have a signal clicked, so you can do one of the following:

A) Derive a custom class from QLabel implementing handlers for mouse events.

B) Implement the event handlers in Ui_Form, using standard QLabels and install the form as an event filter for the labels (self.QPLabel.installEventFilter (self)).



来源:https://stackoverflow.com/questions/22232705/clickable-event-on-qlabel-in-python-using-pyqt4

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!