python 2.7 PyQt4로 업무에 필요한 어플리케이션 개발중에 문제가 생겼습니다
업무중에 측정장비에서 실시간으로 데이터를 받아와서 GUI 화면에 그 데이터를 실시간으로 계속 띄우려고 하는데요
프로그래밍은 처음해보는거라 자꾸 막힙니다 ㅜ
python 2.7, PyQt4입니다.
함수1[edscall()] = 장비에서 데이터를 받아오는 명령어들
Slot이 5개가 있는데 5개 Slot을 다 받아와서
제가 필요한 부분만 파씽하여
slot1,slot2,slot3,slot4,slot5 라는 변수에 저장하도록 만들었습니다.
그리고 그 변수들을 str형으로 변환하였습니다.(Qlabel에 표현하기 위하여)
함수2[gui()] = Qt Designer를 사용하여 GUI를 만들어서 *.py 로 변환하였습니다.
Mainwindow 상 Qlabel에 위에서 위에 str형으로 변환한 장비에서 받아온 데이터들
(slot1,slot2,slot3,slot4,slot5)을 지정하여 화면에 나오게 하였습니다.
본문 = while True:
edscall()
gui()
요렇게 써서 계속해서 데이터를 받으면서 GUI창에 그 데이터를 실시간으로 갱신하면서 띄우려고 했는데
데이터 한번 받아오고 GUI창에 데이터 띄운 후 진행이 안되고 끝나네요ㅜㅠ
도와주십시오!
코드는 텍스트 파일에 올렸습니다 ㅜ
첨부 | 파일 크기 |
---|---|
개발새발.txt | 30.17 KB |
새로 시작하는 프로젝트라면 Python 3과 PyQt
새로 시작하는 프로젝트라면 Python 3과 PyQt 5.x를 사용하는 것을 일단 추천합니다. 그리고 pyuic로 튀어나온 ui_mainwindow.py 파일을 직접 편집하기보다는 하위 클래스로 만드는 방법을 추천합니다. UI 파일을 직접 편집하지 않으면 UI를 업데이트 할 때마다 일일이 파일을 고치는 수고를 덜 수 있습니다.
그리고 더 이상 코드를 짜기 전에 일단 멀티스레딩을 익히셔야 할 것 같습니다. 데이터를 그냥 while True를 돌면서 읽어와도 되는 건가요? 만약 이 과정이 blocking이라면 GUI 작동을 block하기 때문에 프로그램이 멈춘 것처럼 보이게 됩니다. GUI는 GUI대로 돌리고, 데이터를 읽어와서 GUI를 업데이트하는 작업을 다른 스레드로 빼는 구조로 변경하셔야 의도한 대로 실행될 것 같습니다.
조언감사합니다!!
조언 감사합니다!
댓글 달기