반응형
버튼을 누르면 0% ~ 100% 의 로딩바를 채우고 messagebox를 띄우는 코드를 작성해보겠다.
먼저 코드와 실행화면부터 확인하고 설명하도록 한다.
코드
import os
import sys
from time import sleep
from PyQt5.QtWidgets import *
from PyQt5 import uic
def resource_path(relative_path):
base_path = getattr(sys, "_MEIPASS", os.path.dirname(os.path.abspath(__file__)))
return os.path.join(base_path, relative_path)
form = resource_path('211012.ui')
form_class = uic.loadUiType(form)[0]
class WindowClass(QMainWindow, form_class):
def __init__(self):
super().__init__()
self.setupUi(self)
self.btn_test.clicked.connect(self.progress_loading)
def progress_loading(self):
for i in range(101): # 1~100 까지
self.progress.setValue(i) # i 증가
sleep(0.1) # 0.1초마다 수행
self.msg_box()
def msg_box(self):
msg = QMessageBox() # msg 변수에 msgbox 할당
msg.setWindowTitle("테스트용") # 제목설정
msg.setText('완료') # 내용설정
msg.exec_() # 메세지박스 실행
if __name__ == '__main__':
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
실행화면
먼저 Qtdesigner를 통해 ui를 만들어보자.
ProgressBar 위젯을 Mainwindow에 드래그 후 우측 속성에서 value를 0으로 바꾸어주자.
이 value는 초기값을 의미한다.
그리고 object명을 progress로 변경해준다.(이름은 아무거나 해도된다.)
추가로 옆에 btn_test 버튼 오브젝트를 하나 만들어 준다.
1. 버튼과 progressbar를 signal - slot 연결하기.
class WindowClass(QMainWindow, form_class):
def __init__(self):
super().__init__()
self.setupUi(self)
self.btn_test.clicked.connect(self.progress_loading) # btn_test 를 progress_loding함수에 연결
2. progress_loding 함수 만들기.
def progress_loading(self):
for i in range(101): # 1~100 까지
self.progress.setValue(i) # i 증가
sleep(0.1) # 0.1초마다 수행
self.msg_box() # msg_box 함수 호출
여기서 self.progress.setValue( ) 는 progressBar의 값을 설정해주는 메서드이다.
3. msg_box 함수 만들기.
def msg_box(self):
msg = QMessageBox() # msg 변수에 msgbox 할당
msg.setWindowTitle("테스트용") # 제목설정
msg.setText('완료') # 내용설정
msg.exec_() # 메세지박스 실행
총 코드와 실행 화면은 맨 위와 같다.
반응형
'Pyqt5로 GUI만들기' 카테고리의 다른 글
04. [PyQt5] Qtimer 사용법. 시간마다 특정 행동 반복하기. (0) | 2021.10.12 |
---|---|
03. [PyQt5] qtdesigner를 이용하여 창 전환 하기. (0) | 2021.10.12 |
02. [PyQt5] QtDesigner에서 시그널-슬롯 연결하기. (1) | 2021.10.06 |
01. [PyQt5] Qtdesigner를통한 Pyqt5 기본 세팅하기. (0) | 2021.10.06 |