파이썬 ui 프로그래밍 실습 1장에서 작성한 코드를 객체지향 코드로 변경을 해보도록 하겠습니다.
1장 링크 : https://blp1209.tistory.com/100
1장의 내용을 객체지향 코드로 전환 하면 아래와 같이 변경이 가능 합니다.
#pyqt5_example_re.py
# 명령행 인수를 GUI에 전달할 수 있도록 sys를 import 한다.
import sys
# PyQt5 패키지에서 QtWidgets 모듈에 있는 QApplication 및 QWidget 클래스를 import 한다.
from PyQt5.QtWidgets import QApplication, QWidget
# QWidget을 상속하는 클래스를 만든다.
class GUI(QWidget):
def __init__(self) :
super().__init__()
# 윈도우를 생성하고 슈퍼클래스를 초기화 한다.
self.initUI()
def initUI(self):
# 타이틀을 변경 합니다.
self.setWindowTitle('PyQt5 GUI')
# 셀프 테스팅 코드를 추가 한다.
if __name__ == '__main__':
# 추가 명령행 이수를 전달할 수 있도록 sys.argv로 전달해 QApplication 클래스의 인스턴스를 생성 한다.
# 이 인스턴스를 app 변수에 저장 한다.
# 이렇게 하면 애플리케이션이 만들어 진다.
app = QApplication(sys.argv)
# QWidget 클래스의 인스턴스를 만들고 GUI가 된다.
# 이 인스턴스를 gui라는 로컬 변수에 저장 한다.
gui = GUI()
# GUI를 볼 수 있도록 gui 클래스 인스턴스의 show 메서드를 호출한다.
gui.show()
# 어블리케이션 클래스 인스턴스에서 exec_ 메서드를 호출해 애플리케이션을 실행한다.
# 발생할 수 있는 예외 사항을 파악하기 위해 호출을 sys.exit 내에 래핑 한다.
# 에외가 발생하면 파이썬 애플리 케이션이 정상적으로 종료 되고 충돌하지 않는다.
sys.exit(app.exec_())
추가로 QMainWindow 상속을 해 보겠습니다.
이전 소스와 다른 내용은 QWidget을 import 하지 않고 QMainWindow 를 import하여 크기 조정 한 창을 출력 할 수 있다.
#pyqt5_example_re.py
# 명령행 인수를 GUI에 전달할 수 있도록 sys를 import 한다.
import sys
# PyQt5 패키지에서 QtWidgets 모듈에 있는 QApplication 및 QMainWindow 클래스를 import 한다.
from PyQt5.QtWidgets import QApplication, QMainWindow
# QMainWindow을 상속하는 클래스를 만든다.
class GUI(QMainWindow):
def __init__(self) :
super().__init__()
# 윈도우를 생성하고 슈퍼클래스를 초기화 한다.
self.initUI()
def initUI(self):
# 타이틀을 변경 합니다.
self.setWindowTitle('PyQt5 GUI')
self.resize(400, 300)
# 셀프 테스팅 코드를 추가 한다.
if __name__ == '__main__':
# 추가 명령행 이수를 전달할 수 있도록 sys.argv로 전달해 QApplication 클래스의 인스턴스를 생성 한다.
# 이 인스턴스를 app 변수에 저장 한다.
# 이렇게 하면 애플리케이션이 만들어 진다.
app = QApplication(sys.argv)
# QWidget 클래스의 인스턴스를 만들고 GUI가 된다.
# 이 인스턴스를 gui라는 로컬 변수에 저장 한다.
gui = GUI()
# GUI를 볼 수 있도록 gui 클래스 인스턴스의 show 메서드를 호출한다.
gui.show()
# 어블리케이션 클래스 인스턴스에서 exec_ 메서드를 호출해 애플리케이션을 실행한다.
# 발생할 수 있는 예외 사항을 파악하기 위해 호출을 sys.exit 내에 래핑 한다.
# 에외가 발생하면 파이썬 애플리 케이션이 정상적으로 종료 되고 충돌하지 않는다.
sys.exit(app.exec_())
상태창 위젯을 추가해 보자.
소스에서 상태창을 추가하는 할수를 정의 하고 호출 하면 왼쪽 하단에 상태창이 이전과 다르게 발생 한다.
#pyqt5_example_re.py
# 명령행 인수를 GUI에 전달할 수 있도록 sys를 import 한다.
import sys
# PyQt5 패키지에서 QtWidgets 모듈에 있는 QApplication 및 QMainWindow 클래스를 import 한다.
from PyQt5.QtWidgets import QApplication, QMainWindow
# QMainWindow을 상속하는 클래스를 만든다.
class GUI(QMainWindow):
def __init__(self) :
super().__init__()
# 윈도우를 생성하고 슈퍼클래스를 초기화 한다.
self.initUI()
def initUI(self):
# 타이틀을 변경 합니다.
self.setWindowTitle('PyQt5 GUI')
self.resize(400, 300)
self.add_widgets() # 상태창 호출
# 상태창 위젯을 호출 하는 함수 정의
def add_widgets(self):
self.statusBar().showMessage('Text in statusbar')
# 셀프 테스팅 코드를 추가 한다.
if __name__ == '__main__':
# 추가 명령행 이수를 전달할 수 있도록 sys.argv로 전달해 QApplication 클래스의 인스턴스를 생성 한다.
# 이 인스턴스를 app 변수에 저장 한다.
# 이렇게 하면 애플리케이션이 만들어 진다.
app = QApplication(sys.argv)
# QWidget 클래스의 인스턴스를 만들고 GUI가 된다.
# 이 인스턴스를 gui라는 로컬 변수에 저장 한다.
gui = GUI()
# GUI를 볼 수 있도록 gui 클래스 인스턴스의 show 메서드를 호출한다.
gui.show()
# 어블리케이션 클래스 인스턴스에서 exec_ 메서드를 호출해 애플리케이션을 실행한다.
# 발생할 수 있는 예외 사항을 파악하기 위해 호출을 sys.exit 내에 래핑 한다.
# 에외가 발생하면 파이썬 애플리 케이션이 정상적으로 종료 되고 충돌하지 않는다.
sys.exit(app.exec_())
메뉴바를 추가해 보자
QAction 을 새로 import 하고, 새로 생성 했던 add_widgets 함수에 메뉴바를 추가하는 코딩을 추가 하였다.
작성 하고 실행 하면 메뉴바가 생성 된 것을 확인 할 수 있다.
메뉴 모음의 인스턴스를 만든 후 addMenu 메서드를 사용해 메뉴를 반들었다.
QAction 클래스를 사용해 메뉴 항목ㅇㄹ 생성 한 다음 addAction 메서드를 사용해 이 메뉴 항목을 메뉴에 추가했고,
new_action 변수를 사용해 setStatusTip을 호출 했다.
File > New 를 클릭, 하면 상태바에 New File 이 보일 것 이다.
#pyqt5_example_re.py
# 명령행 인수를 GUI에 전달할 수 있도록 sys를 import 한다.
import sys
# PyQt5 패키지에서 QtWidgets 모듈에 있는 QApplication 및 QMainWindow 클래스를 import 한다.
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction
# QMainWindow을 상속하는 클래스를 만든다.
class GUI(QMainWindow):
def __init__(self) :
super().__init__()
# 윈도우를 생성하고 슈퍼클래스를 초기화 한다.
self.initUI()
def initUI(self):
# 타이틀을 변경 합니다.
self.setWindowTitle('PyQt5 GUI')
self.resize(400, 300)
self.add_widgets() # 상태창 호출
# 상태창 위젯을 호출 하는 함수 정의
def add_widgets(self):
self.statusBar().showMessage('Text in statusbar')
menubar = self.menuBar()
file_menu = menubar.addMenu('File')
new_action = QAction('New', self)
file_menu.addAction(new_action)
new_action.setStatusTip('New File')
# 셀프 테스팅 코드를 추가 한다.
if __name__ == '__main__':
# 추가 명령행 이수를 전달할 수 있도록 sys.argv로 전달해 QApplication 클래스의 인스턴스를 생성 한다.
# 이 인스턴스를 app 변수에 저장 한다.
# 이렇게 하면 애플리케이션이 만들어 진다.
app = QApplication(sys.argv)
# QWidget 클래스의 인스턴스를 만들고 GUI가 된다.
# 이 인스턴스를 gui라는 로컬 변수에 저장 한다.
gui = GUI()
# GUI를 볼 수 있도록 gui 클래스 인스턴스의 show 메서드를 호출한다.
gui.show()
# 어블리케이션 클래스 인스턴스에서 exec_ 메서드를 호출해 애플리케이션을 실행한다.
# 발생할 수 있는 예외 사항을 파악하기 위해 호출을 sys.exit 내에 래핑 한다.
# 에외가 발생하면 파이썬 애플리 케이션이 정상적으로 종료 되고 충돌하지 않는다.
sys.exit(app.exec_())
'프로그램 파이썬 공부' 카테고리의 다른 글
파이썬 ui 프로그래밍 실습 feat. PyQT5, PyQT-tools(designer) 4장 (0) | 2022.01.30 |
---|---|
파이썬 ui 프로그래밍 실습 feat. PyQT5, PyQT-tools(designer) 3장 (0) | 2022.01.29 |
파이썬 ui 프로그래밍 실습 feat. PyQT5, PyQT-tools(designer) 1장 (0) | 2022.01.27 |
파이썬 셀레니움 사용법 2 (0) | 2022.01.19 |
파이썬 셀레니움 사용법 1 (0) | 2022.01.18 |