파이썬 파일 시스템 (워치 독) 코드가 성공적으로 자신의 스레드에서 pyqtSignal # emit() 호출을 트리거합니다 (pdb 추적으로 입증 됨).python QObject의 슬롯이 emit()에 의해 트리거되지 않는 이유
이 신호는 connect (...)를 통해 내 자신의 QObject의 해당 @pyqtSlot 함수에 연결해야하지만 파일 시스템 변경시 방출 대상을 트리거 할 때 대상 함수는 실제로 호출되지 않습니다.
예제 코드
는 https://github.com/cefn/xmlorgmode/blob/2b97ff9994132def035d325fc7f7095c9fe187f2/index.py에서 검사 될 수 있고, 다음과 같이 XML 파일과 동일한 폴더에 전달 된 XQuery에 파일과, 호출 될 수있다.
python index.py index.xml index.xq
처음에는 완벽하게로드되지만 파일 시스템에 의해 새로 고침이 발생하지 않습니다. 이것은 코드가 작동하면 기대했던 것입니다. 실패는 침묵이다.
WatchDog 트리거 에미 션이 QueryDisplay # update (...)에 대한 호출에 해당하도록 추가 이벤트 루프 구조를 제안 할 수 있습니까?
배경
내가 동적 HTML 구성 지나가는 실험을했습니다 때때로 변경 폴더에 텍스트 파일로 백업 QWebView합니다. QWebView # setHtml (...)이 자체 스레드 내에서 호출되어야한다는 요구 사항 때문에 신호와 슬롯을 찾아야하고 벽돌 벽에 부딪 혔습니다. 내가 도착한 스레딩 배열은 어찌 되었든 깨졌지만 방법을 알 수는 없습니다.
방출 된 사항이 처리 될 수 있도록 QObject가 해당 스레드 내의 이벤트 루프와 연관되는 방식을 설정할 수 없습니다. 실행중인 코드를 디버깅 한 후 QApplication, QWebView 및 QObject는 app.exec_() 루프를 입력하기 직전에 #thread()를 pdb와 대화식으로 호출하여 유사성을 설정할 때 동일한 스레드를 공유합니다. 이 모든 객체에 대한 모든 이벤트가 app.exec_() 내에서 처리된다는 것을 의미한다고 생각했지만 어떻게 든 모델을 오해 했음에 틀림 없습니다.
(Pdb) adaptor.thread()
<PyQt4.QtCore.QThread object at 0xb30c3c44>
(Pdb) display.view.thread()
<PyQt4.QtCore.QThread object at 0xb30c3c44>
(Pdb) app.thread()
<PyQt4.QtCore.QThread object at 0xb30c3c44>