반응형
먼저 코드와 실행 모습을 보고 아래 설명을 진행하겠다.
목표 : 10초마다 messagebox 출력
코드
import os
import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic
from PyQt5.QtCore import *
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.timer = QTimer(self) # timer 변수에 QTimer 할당
self.timer.start(10000) # 10000msec(10sec) 마다 반복
self.timer.timeout.connect(self.msg_box) # start time out시 연결할 함수
def msg_box(self):
msg = QMessageBox() # msg 변수에 msgbox 할당
msg.setWindowTitle("테스트용") # 제목설정
msg.setText('10초마다 실행중') # 내용설정
msg.exec_() # 메세지박스 실행
if __name__ == '__main__':
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
실행모습
Pyqt5에는 Qtimer라고 하는 특정 시간마다 시그널을 보낼 수 있는 메서드가 존재한다.
일단 공부를위해 옛날에 만들어두었던 기본 세팅을 사용해보자.
https://trading-for-chicken.tistory.com/25
import os
import sys
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)
if __name__ == '__main__':
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
이제 __init__부에 Qtimer 설정을 해보자.
class WindowClass(QMainWindow, form_class):
def __init__(self):
super().__init__()
self.setupUi(self)
self.timer = QTimer(self) # timer 변수에 QTimer 할당
self.timer.start(10000) # 10000msec(10sec) 마다 반복
self.timer.timeout.connect(self.msg_box) # start time out시 연결할 함수
timer 변수를 Qtimer에 할당 한 후, msec 단위로 설정된 반복시간을 start 메서드를 통해 설정한 후
timeout메서드에 connect를 통해 시그널-슬롯을 연결해준다.
이제 messagebox를 띄우는 함수를 만들어보자.
def msg_box(self):
msg = QMessageBox() # msg 변수에 msgbox 할당
msg.setWindowTitle("테스트용") # 제목설정
msg.setText('10초마다 실행중') # 내용설정
msg.exec_() # 메세지박스 실행
완성된 코드와 실행 모습은 맨 위와 같다.
반응형
'Pyqt5로 GUI만들기' 카테고리의 다른 글
05. [PyQt5] QProgressBar를 통해 로딩바 만들기 : 기본 로딩바 만들기 (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 |