2016-05-13 53 views
1

我的代碼如下PyQt4中的交互式標籤,可以點擊,右鍵單擊並滾動。我正在轉換PyQt5的代碼,現在我的代碼中的很多東西都基於這個元素。如何在PyQt5中添加信號到QLabel?

class ExtendedQLabel(QLabel): 
    def __init(self, parent): 
     super().__init__(parent) 

    def mousePressEvent(self, ev): 
     if ev.button() == QtCore.Qt.RightButton: 
      self.emit(SIGNAL('rightClicked()')) 
     else: 
      self.emit(SIGNAL('clicked()')) 

    def wheelEvent(self, ev): 
     self.emit(SIGNAL('scroll(int)'), ev.delta()) 

我該如何使這個PyQt5兼容?

回答

2

好了,很多事情後,我明白我在做什麼錯:

from PyQt5 import * 
from PyQt5.QtGui import * 
from PyQt5.QtWidgets import * 
from PyQt5.QtCore import * 

class ExtendedQLabel(QLabel): 
    def __init(self, parent): 
     super().__init__(parent) 

    clicked = pyqtSignal() 
    rightClicked = pyqtSignal() 

    def mousePressEvent(self, ev): 
     if ev.button() == Qt.RightButton: 
      self.rightClicked.emit() 
     else: 
      self.clicked.emit() 

if __name__ == '__main__': 
    app = QApplication([]) 
    eql = ExtendedQLabel() 
    eql.clicked.connect(lambda: print('clicked')) 
    eql.rightClicked.connect(lambda: print('rightClicked')) 
    eql.show() 
    app.exec_() 

在符合文本clicked = pyqtSignal()rightClicked = pyqtSignal()有什麼聯繫這些信號的那類,使得上述工作的代碼?那麼答案是正確縮進,正確的縮進將嵌套變量到類,而不是隨機創建一個沒有用的變量。我花了很多時間來理解這一點,所以如果有人在谷歌這一點,在這裏提出這個想法可能會有用。