2023. 10. 10. 15:03ㆍDATA PROGRAMMING/PYTHON
실행자는 실제 프로그램에 들어갈 알고리즘이나, 특정한 버튼을 눌렀을 때 특정한 기능을 하는 함수나 메소드 등을 정의할 필요가 있다. 하지만 그러한 인터페이스를 하나하나 일일이 조정하거나 버튼, 위젯 등을 전부 생성하는 것은 비효율적인 일이다. 이런 일들을 쉽게 처리하도록 도와주는 것 Qt Designer이다.
Qt Desingner
C:\Anaconda3\Library\bin 디렉터리에 designer.exe 파일을 통해 실행할 수 있다.
왼쪽의 위젯에서 끌어와 편리하게 인터페이스를 구성할 수 있고, 오른쪽의 객 탐색기, 속성 편집기 등을 통해 위젯을 수정할 수 있다. Ctrl + R을 누르면 지금까지 작업한 내용을 미리보기 할 수 있다.
이 파일을 저장하면 xml 파일 형태로 저장된다. 이를 파이썬으로 코딩할 수 있다. pyuic.py라는 프로그램을 통해 xml 파일을 파이썬 코드 형태로 수정해 주면 된다.
ui 파일을 PyQt5 uic 폴더 복사한 뒤 uic 폴더에서 cmd를 실행하고 해당 문구를 입력한다.
그러면 ui파일을 통해 py파일을 만들 수 있다.
다음은 ui 파일을 파이썬에서 로드하는 방법에 대한 내용이다.
import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic
form_class = uic.loadUiType("main_window.ui")[0]
class MyWindow(QMainWindow, form_class):
def __init__(self):
super().__init__()
self.setupUi(self)
if __name__ == "__main__":
app = QApplication(sys.argv)
myWindow = MyWindow()
myWindow.show()
app.exec_()
파이썬에서 MyWindow 클래스를 정의할 때, QMainWindow를 상속받아야 그 기능들을 사용할 수 있었다. 여기에 form_class 클래스 즉, 저장해 놓은 ui 파일까지 상속받으면 파이썬 내에서도 만들어 놓은 인터페이스를 실행할 수 있다.
지금까지 Qt Designer를 통한 대략적인 인터페이스 설정에 대해서 알아보았고, 각 버튼 등에 기능(함수나 메소드)를 입힐 수만 있으면 프로그램이 완성된다.
import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic
form_class = uic.loadUiType("main_window.ui")[0]
class MyWindow(QMainWindow, form_class):
def __init__(self):
super().__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.btn_clicked)
def btn_clicked(self):
QMessageBox.about(self, "message", "clicked")
if __name__ == "__main__":
app = QApplication(sys.argv)
myWindow = MyWindow()
myWindow.show()
app.exec_()
이전 글에서 정의한 메소드인 btn_clicked를 그대로 정의하고, form_class만 상속받아 주면 된다.
이제 프로그램에 사용되는 함수나 메소드는 파이썬 코딩을 통해 설정하고, ui 등은 Qt Designer를 사용하여 편리하게 설정할 수 있다.
'DATA PROGRAMMING > PYTHON' 카테고리의 다른 글
[PYTHON] 문자열 내림차순으로 배치하기 (0) | 2023.11.06 |
---|---|
[PYTHON] 코딩테스트 문제 풀이 - 가운데 글자 가져오기 (0) | 2023.10.26 |
[PYTHON] 장바구니 데이터 빈발항목 집합 구하기(연관규칙) 실습 (0) | 2023.10.10 |
[PYTHON] 편리한 알고리즘 트레이딩, PyQt를 활용한 GUI 프로그래밍 - 1. 기초편 (0) | 2023.10.08 |
[PYTHON] matplotlib을 활용하여 3차원 그래프 그리기 (0) | 2023.10.06 |