PyQt-QLabel继承
-
12-09-2019 - |
题
我想要继承的QLabel添加有点击事件的处理。我想这码:
class NewLabel(QtGui.QLabel):
def __init__(self, parent):
QtGui.QLabel.__init__(self, parent)
def clickEvent(self, event):
print 'Label clicked!'
但之后的点击我有没有线'的标签击!'
编辑:
好吧,现在我使用的不clickEvent'但'mousePressEvent'.而且我还有一个问题。我怎么知道究竟是什么标签被点击?例如,我有2个编辑框2的标签。标签内容是映射.所以没有任何案文在标签,所以我不能辨别差异的标签。我怎么可以那样做?
EDIT2: 我做了这个代号:
class NewLabel(QtGui.QLabel):
def __init__(self, firstLabel):
QtGui.QLabel.__init__(self, firstLabel)
def mousePressEvent(self, event):
print 'Clicked'
#myLabel = self.sender() # None =)
self.emit(QtCore.SIGNAL('clicked()'), "Label pressed")
在另一类:
self.FirstLang = NewLabel(Form)
QtCore.QObject.connect(self.FirstLang, QtCore.SIGNAL('clicked()'), self.labelPressed)
老虎在同一类:
def labelPressed(self):
print 'in labelPressed'
print self.sender()
但是没有送对象中的自我。我做错了什么?
解决方案
回答你的第二个问题,我将继续根据@gnud例如:
- 类QLabel,复盖mouseReleaseEvent,并添加一个信号给类,让我们叫它的点击。
- 查查哪个按钮被点击在mouseReleaseEvent,如果这是左侧的一个发射击的信号。
- 连接的老虎,你的标点击的信号和使用 发送者() 内知道哪QLabel是点击。
其他提示
有在QWidget的/ QLabel无功能clickEvent
。你可以说功能连接到一个Qt信号,或者你可以这样做:
class NewLabel(QtGui.QLabel):
def __init__(self, parent=None):
QtGui.QLabel.__init__(self, parent)
self.setText('Lorem Ipsum')
def mouseReleaseEvent(self, event):
print 'Label clicked!'
从 PyQt的维基的作品非常好,但我想答案补充的是,clickable
类应该调用widget.mouseReleaseEvent
(右return True
之前),以防万一用户定制此事件。
不隶属于 StackOverflow