GUI를 이용하다 보면 코드가 도는 동안 GUI가 응답 없음 상태가 됨을 확인할 수 있다.

이 현상을 없애기 위해 쓰레드를 나누어 코드가 돌아가는 동안 GUI도 함께 돌려 해결해보자



Thread

쓰레드(Thread)란 하나의 프로세스안에 일을 병렬로 처리하는 단위

자세한건 나중에 시스템 프로그래밍을 공부하며 다시 쓰겟다.



우선 쓰레드 Class를 정의해 준다.

쓰레드를 통해 돌리고 싶은 코드를 run함수에 작성한다.


1
2
3
4
5
class ThreadClass(QtCore.QThread): 
    def __init__(self, parent = None): 
        super(ThreadClass,self).__init__(parent)
def run(self): 
#~~~~~
cs


다음 GUI class에 __init__ 부분에서 쓰레드 Class를 이용해 쓰레드 변수를 정의한다.


1
2
3
class Ui_MainWindow(object):
    def __init__ (self, parent = None) :
        self.threadclass = ThreadClass() 
cs



마지막으로 쓰레드를 사용하고 싶은 곳에서 쓰레드를 실행 해 준다.


1
self.threadclass.start() 
cs



그러면 이제 GUI가 잘 돌아갈 것이다





'파이썬 > Pyqt5를 이용한 GUI' 카테고리의 다른 글

Pyqt5를 이용한 GUI - 버튼설정  (1) 2019.02.02
Pyqt5를 이용한 GUI  (0) 2019.02.02

Qt designer를 이용해 간단하게 인터페이스를 만들었다면 이제 인터페이스에 우리가 원하는 기능을 넣어 보자



버튼 클릭

버튼을 만들어도 클릭 시 이벤트가 발생하지 않으면 무용 지물이다.


self.pushButton.clicked.connect(self.btn1_clicked)를 입력해 준다.


1
self.pushButton.clicked.connect(self.btn1_clicked)  
cs


또한 클래스내 btn1_clicked함수를 정의해 주면 버튼 클릭 시 btn1_clicked함수를 실행하게 된다.


1
2
class MyWindow(QMainWindow, form_class):
    def btn1_clicked(self):
cs




버튼 활성화 비활성화

버튼을 입력하면 필요 시 까지 버튼을 비 활성화해 클릭을 불가능하게 할 수도 있다.


1
self.pushButton.setDisable(True)
cs




반대로 활성화 하고 싶으면

1
self.pushButton.setEnable(True)
cs






만든 파이썬 프로그램을 편하게 사용할 수 있도록 GUI를 만들어 보자



PyQt5

먼저 PyQt5를 설치해 보자

Amaconda prompt를 실행 해 하래 명령어를 입력한다.


pip install pyqt5


PyQt5는 Qt designer하는 Ui를 지원해 보다 편하게 내가 원하는 GUI를 만들 수 있다.




Qt designer


그럼 Qt designer를 이용해 GUI를 만들어 보자

실행 방법은 2가지가 있다. 


1. 아나콘다 설치 디렉터리(C:\Users\Been\Anaconda3\\Library\bin)로 가서 designer.exe 파일을 찾아 실행시킨다.

* 설치 디렉터리는 다를 수 있다.

2. Amaconda prompt를 실행 후 designer를 입력한다.


두 가지 중 편한 방식을 사용하자



이후 원하는 위젯을 배치 하고 속성 탭을 이용해 GUI를 만들고 저장하자




그러면 .ui라는 파일로 저장이 가능하다. 이제 이 파일을 파이썬 코드로 변환 시킬 것이다.





파이썬 코드로 변환


.ui 파일은 XML언어로 구성되어 있다. 그래서 우리는 XML코드를 파이썬 코드로 변환 시켜 줘야 한다.

(아직 XML언어에 대해 잘 모른다... 나중에 따로 공부하자)


변환 방법은 우선 C:\Users\Been\Anaconda3\Lib\site-packages\PyQt5\uic 파일로 가자


변환할 .ui파일을 해당 디렉터리에 복사를 한다.




해당 디렉터리에서 Shift + 마우스 오른쪽 버튼 으로 [여기서 명령 창 열기]를 클릭해 간편하게 필요한 주소로 명령 창을 연다.


명령 창에 하단의 명령어를 입력해 변환시킨다.


python -m PyQt5.uic.pyuic '.ui파일명.ui' -o '원하는 파일명.py'





그러면 C:\ProgramData\Anaconda3\Lib\site-packages\PyQt5\uic 디렉토리에 .py파일이 생성된 것을 볼 수 있다.



+ Recent posts