반응형
Pyqt5를 다뤄본 사람들이라면 알겠지만, 레이아웃 요소 하나하나를 코딩하는것 보다 Qtdesigner 툴을 이용하면 훨씬 편하다. 다만, 코딩보단 범용성이 떨어지기때문에 때에 따라서는 사용상 어려움이 있는데,(자유도가 떨어진다는 느낌)
특히나 초반 세팅에서 애먹는 사람이 많다. 일단 designer를 통해 test.ui를 만들어보자.
파이참에서는 terminal 에 'designer' 입력하여 qtdesigner를 켤수 있다.
이제 여기서 mainwindow를 하나 만들어주자
그리고 버튼 위젯 하나를 드래그해서 mainwindow에 추가하고, 오브젝트명을 btn_test로 바꿔준 뒤, 파이썬 프로젝트안에 test.ui로 저장해주자
반응형
이제 Qtdesigner를 사용할 때 가장 기본이 되는 세팅을 알아보자. 먼저 코드부터 공유한다. 아래와같이 입력한다.
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('test.ui') # 여기에 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_()
이제 실행하면 만들었던 test.ui가 실행되는것을 확인할 수 있다.
이제 test버튼을 누르면 "테스트"라는 글자가 print가 되게 시그널-슬롯을 만들어보자. 아주 간단하다.
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('test.ui')
form_class = uic.loadUiType(form)[0]
class WindowClass(QMainWindow, form_class):
def __init__(self):
super().__init__()
self.setupUi(self)
# btn_test 클릭 시 testclick 함수 실행
self.btn_test.clicked.connect(self.testclick)
# 실행될 함수
def testclick(self):
print('test')
if __name__ == '__main__':
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
이렇게 __init__에 시그널-슬롯을 연결해주고, 아래에서 함수를 실행해주면 된다.
실행해서 test 버튼 클릭하면 아래와 같이 실행된다.
다음장에서는 아예 PyQt5에서 시그널-슬롯 연결하는 방법에 대해 배워본다.
반응형
'Pyqt5로 GUI만들기' 카테고리의 다른 글
05. [PyQt5] QProgressBar를 통해 로딩바 만들기 : 기본 로딩바 만들기 (0) | 2021.10.12 |
---|---|
04. [PyQt5] Qtimer 사용법. 시간마다 특정 행동 반복하기. (0) | 2021.10.12 |
03. [PyQt5] qtdesigner를 이용하여 창 전환 하기. (0) | 2021.10.12 |
02. [PyQt5] QtDesigner에서 시그널-슬롯 연결하기. (1) | 2021.10.06 |