سؤال

أريد أن يرث Qlabel لإضافة هناك انقر فوق معالجة الحدث. أحاول هذا الرمز:

class NewLabel(QtGui.QLabel):
    def __init__(self, parent):
        QtGui.QLabel.__init__(self, parent)

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

ولكن بعد النقر فوق ليس لدي أي خط "قم بالنقر فوق"

تعديل:

حسنا، الآن أنا أستخدم "غير مفكهة" ولكن "الفخارفنت". ولا يزال لدي سؤال. كيف يمكنني معرفة ما تم النقر فوق الملصق بالضبط؟ على سبيل المثال، لدي مربع تحرير 2 و 2 ملصقات. محتوى الملصقات هي pixmaps. لذلك لا يوجد أي نص في الملصقات، لذلك لا أستطيع تمييز الفرق بين الملصقات. كيف أقوم بذلك؟

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()

ولكن ليس هناك كائن المرسل في النفس. ماذا فعلت خطأ؟

هل كانت مفيدة؟

المحلول

الإجابة على سؤالك الثاني، سأستمر بناء على مثال GGNED:

  • Subclass Qlabel، تجاوز MousereleaseEvent وإضافة إشارة إلى الفصل، دعونا نسميها بالنقر فوق.
  • تحقق من أي زر تم النقر عليه في MousereleaseEvent، إذا كان أحد الأيسر ينبعث من إشارة النقر.
  • قم بتوصيل فتحة إلى ملصقاتك النقر فوق إشارة واستخدامها مرسل() في الداخل لمعرفة ما تم النقر فوق القلبل.

نصائح أخرى

لا توجد وظيفة clickEvent في Qwidget / Qlabel. يمكنك توصيل هذه الوظيفة بإشارة كيو تي، أو يمكنك القيام به:

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 Wiki. يعمل بشكل جيد للغاية ولكني أود أن أضيف أن clickable يجب أن تتصل الفئة widget.mouseReleaseEvent (قبل return True)، فقط في حالة قيام المستخدم بتخصيص هذا الحدث.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top