2016-11-29 3 views
0

이 예제는 PyQt4에서 보았습니다. 신호 및 슬롯 PyQt5 변화하지만PyQt5 다른 프로그램에서 선택한 텍스트 콘텐츠 가져 오기

from PyQt4.QtCore import QObject, pyqtSlot, SIGNAL, SLOT 
from PyQt4.QtGui import QApplication, QMessageBox 
import sys 


class MyClipboard(QObject): 

    @pyqtSlot() 
    def changedSlot(self): 
     if(QApplication.clipboard().mimeData().hasText()): 
      QMessageBox.information(None, "Text has been copied somewhere!", 
            QApplication.clipboard().text()) 


def main(): 
    app = QApplication(sys.argv) 
    listener = MyClipboard() 

    app.setQuitOnLastWindowClosed(False) 
    QObject.connect(QApplication.clipboard(), SIGNAL(
     "dataChanged()"), listener, SLOT("changedSlot()")) 

    sys.exit(app.exec_()) 

if __name__ == '__main__': 
    main() 

Get the selected text 및 SIGNAL과 SLOT이 하락된다. PyQt4 신호와 SLOT 라인을 변환하라는 제안.

QObject.connect(QApplication.clipboard(), SIGNAL(
    "dataChanged()"), listener, SLOT("changedSlot()")) 

는 PyQt5

답변

1

에 상응 코드 :

QApplication.clipboard().dataChanged.connect(listener.changedSlot) 

이 완전히 old-style syntax 대체 한 new-style signal and slot syntax이다. 예전 스타일의 구문은 오류가 발생하기 쉽고 자세한 정보가 표시됩니다. 특히 신호 서명이 잘못되면 오류가 발생하지 않습니다. PyQt4는 여전히 두 구문을 모두 지원하지만 PyQt5는 전혀 지원하지 않습니다.

+0

답변을 주셔서 감사합니다. 왜 우리가 datachanged를 통해 연결해야하는지, PyQt4처럼 QObject를 사용하지 말아야 하는지를 정교하게 설명 할 수 있습니까? –

+0

@StormShadow. 내 대답에 몇 가지 추가 정보를 추가했습니다. 그것을 명확히하기 위해 Thy는 – ekhumoro

+0

입니다. –