깽쟈
491
2018-04-04 10:13:49
0
675

pyside로 ui를 만들 때 백그라운드로 작동시키는 방법


안녕하세요. 취미로 개발을 하는 파이썬 개발자입니다.

PySide를 이용하여 툴을 만들고 있습니다. DB의 내용을 가지고 와 레코드들을 QTreeWidget 따위로 목록을 만들어 사용자에게 보여주고, 여러가지 검색 필터를 체크하는 순간 실시간으로 다시 조건에 맞는 목록을 보여주는 프로그램인데요.

목록을 다시 만드는 과정에서 시간이 너무 많이 소요되다보니 QThread를 이용하여 백그라운드로 CRUD를 하고, 준비가 된 레코드부터 목록에 순차적으로 표시가 되게끔 하고 싶은데 잘 안됩니다.

QThread를 상속받아 만든 클래스에 DB의 레코드를 읽어와 Signal로 던지게 했구요. 그걸 받은 Main Thread에서 QTreeWidgetItem을 만들도록 했는데, 순차적으로 목록에 하나씩 추가될 것이라는 예상과는 달리 모든 QTreeWidgetItem이 다 목록에 들어갈 때까지 먹통 되었다가 한꺼번에 등록됩니다.

구글링을 미친듯이 했지만 모자란 영어실력도 있고, 대충 QT가 스레드 안전하지 않는다는 것도 알았고, Widget을 구성하는 것은 Main Thread에서만 실행되어 Signal을 이용해야 한다는 것도 알았는데... 여기서 더 이상 뭘 알아봐야하는지 막혔습니다.

어떤 부분을 더 파야하는지 혹은 참고할 수 있는 사이트나 github 등을 알고 계시다면 알려주시면 감사하겠습니다. 꾸벅 ( _ _ )

0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.