首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyQt - QLabel继承

PyQt - QLabel继承
EN

Stack Overflow用户
提问于 2009-06-07 19:38:54
回答 3查看 6.4K关注 0票数 2

我想继承QLabel以添加到那里,单击事件处理。我在尝试这个密码:

代码语言:javascript
复制
class NewLabel(QtGui.QLabel):
    def __init__(self, parent):
        QtGui.QLabel.__init__(self, parent)

    def clickEvent(self, event):
        print 'Label clicked!'

但在点击后,我没有一行‘标签点击!’

编辑:

好的,现在我用的不是'clickEvent‘而是'mousePressEvent’。我还有个问题。我怎么知道到底是什么标签被点击了?例如,我有两个编辑框和两个标签。标签内容是像素映射。所以标签里没有文字,所以我看不出标签之间的区别。我怎么能这么做?

EDIT2: --我编写了以下代码:

代码语言:javascript
复制
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")

在另一班:

代码语言:javascript
复制
self.FirstLang = NewLabel(Form)
QtCore.QObject.connect(self.FirstLang, QtCore.SIGNAL('clicked()'), self.labelPressed)

同一班的插槽:

代码语言:javascript
复制
def labelPressed(self):
    print 'in labelPressed'
    print self.sender()

但在self中没有发送者对象。我做错了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-06-07 21:04:12

在回答您的第二个问题时,我将继续使用@gnud示例:

  • 子类QLabel,重写mouseReleaseEvent并向类添加一个信号,让我们称之为单击它。
  • 检查在mouseReleaseEvent中单击了哪个按钮,如果是左边的按钮,则发出单击信号。
  • 将一个插槽连接到您的标签上,单击信号,并在其中使用发送者()来知道单击了哪个QLabel。
票数 1
EN

Stack Overflow用户

发布于 2009-06-07 20:15:51

QWidget/QLabel中没有函数clickEvent。您可以将该函数连接到Qt信号,也可以:

代码语言:javascript
复制
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!'
票数 3
EN

Stack Overflow用户

发布于 2012-01-27 19:00:20

来自PyQt维基的答案很好,但是我要补充一点,clickable类应该调用widget.mouseReleaseEvent (就在return True之前),以防用户定制了这个事件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/962640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档