활연개랑

[PyQT(파이큐티)] progress bar timer (프로그레스 바 타이머) 설정 본문

Python

[PyQT(파이큐티)] progress bar timer (프로그레스 바 타이머) 설정

승해tmdhey 2021. 12. 23. 20:55
반응형

progress bar 생성 및 설정하는 방법은 아래 링크를 통해 확인하실 수 있습니다. 

 

 

[PyQT(파이큐티)] progress bar 색상 변경 및 디자인 변경

일단 progressbar 관련 코드 전체를 보여드리도록 하겠습니다. 아래서 하나씩 설명하기로하고, 간단하게 먼저 설명을 하자면 아래 코드는 qt designer가 아닌, python 코드를 통해서만 시작페이지 ui를

tmdhhey.tistory.com

 

 

 

counter = 0으로 잡고 global을 잡아줘서 다른 함수에서 사용할 수 있도록 합니다. 

 

global counter
counter = 0

 

시작화면 class 이름은 Ui_main으로 지정했으며 setup_ui 함수를 통해 코드로 ui를 만들어주고 마지막에 retranslateUi 함수를 실행시켜줍니다. 

self.retranslateUi(main)

 

retranslateUi는 Ui_main class 안에 생성되어있는 함수로 ui를 재설정해줍니다. 

코드를 확인해보시면  self.timer.start(30)이 있습니다. 타이머의 loading이 시작하는 지점을 설정해줄 수 있습니다.

마지막에 있는 self.timer.timeout.connect(self.progress) 코드로 timeout을 설정해줄 수 있습니다.

self.progress 함수가 실행되고 timeout하겠다는 의미입니다.

    def retranslateUi(self, main):
        _translate = QtCore.QCoreApplication.translate
        main.setWindowTitle(_translate("main", "PDR"))
        self.title.setText(_translate("main", "Pulmonary Disease Reader"))
        self.loading.setText(_translate("main", "    loading..."))
        main.show()
        self.timer.start(30)
        self.timer.timeout.connect(self.progress)

 

 

progress 함수는 다음과 같습니다. 

아까 위에서 지정해준 counter = 0을 가져와서 100이 되면 stop하고, 100이 되기 전까지 0.7만큼 계속 +됩니다. 

저는 조금 더 느리게 카운트하기 위해 0.7로 했지만 보통 +1을 하는게 적당합니다.

 

return counter로 잡아주면서 counter가 100이 될시 위 retranslateUi함수에서 timeout에 적용됩니다. 

    def progress(self):
        # set value to progress bar
        global counter      
        self.progressBar.setProperty("value", counter)

        if counter > 100:
            #stop timer
            self.timer.stop()
            main.close()
            widget.show()

        counter += 0.7

        return counter