2000년대 과거 Embedded 에서는 GUI 가 보편적이지 않았지만, 2020년 현재 , 다양한 가정용 장비 / 산업용에서 GUI 를 흔하게 찾아 볼 수 있다. 보편화 된 HW Interface 가 필요하지만, 아직 통일되지 않았다.
대표적인 Firmware 용 GUI Solution
1. ST 사의 TouchGFX : 무료 GUI Solution, ST Chipset 을 써야만 사용 가능 함
2. Embedded Wizard : 개인 사용자에게 무료 , 상용 License 판매
3. SEGGER 의 emWin : 독일의 GUI Solution
Linux에서는 다른 플랫폼으로 Porting 이 자유로운 Qt
가 가장 널리 쓰인다. C++기반 GUI Application 개발시 널리 쓰이는 프레임워크입니다.
Qt만 배우면 , Win App / Linux App / Mobile App 모두 제작이 가능하다.
qt 라이센스 별 사용가능 기능
1. Commercial : 모든 모듈 및 상업용
이지만 유료
이다.
2. GPL : 필수적인 모듈을 쓸 수 있지만, 비상업용
이다.
3. LGPL : 필수적인 모듈은 거의 못쓰지만, 상업용
이다.
Python Binding : 다른 언어로 제작된 Library 를 Python 으로 호출할 수 있는 연결 모듈을 뜻함
유명한 Qt Python Binding Set 두 가지
1. PySide : Qt 공식 Framework, LGPL + GPL
2. PyQt : 비공식 , Reference 가 많음 , GPL
파이참
에서 Settings > Project Interpreter > pyside6 검색하여 설치 버튼 클릭
from PySide6.QtWidgets import *
app = QApplication()
w = QWidget()
w.show()
app.exec_()
실행 버튼으로 실행
from PySide6.QtWidgets import *
app = QApplication()
label = QLabel("Hello World")
label.show()
app.exec()
from PySide6.QtWidgets import *
app = QApplication()
button = QPushButton("클릭")
button.show()
app.exec()
import [모듈]
로 전체 모듈 불러올 수 있지만, 항상 [모듈]명을 적어줘야 한다.From 모듈 import 변수 / 함수
로 특정 모듈을 가져온다.Widgets : Qt에서 눈에 보이는 모든 모듈 (컨트롤)
QWidget : 모든 위젯들의 부모이다.
from PySide6.QtWidgets import *
app = QApplication()
win = QWidget()
# 제목 정하기
win.setWindowTitle("HAHA")
# (0,0)이 좌상 꼭짓점, (400,300)이 우하 꼭짓점 좌표로 시작 지점 및 사이즈 지정 가능
win.setGeometry(0,0,400,300)
win.show()
app.exec()
from PySide6.QtWidgets import *
class From(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(0,0,400,500)
self.btn = QPushButton("HI",self)
self.btn.move(100,200)
def kfcgogo(self):
print("HI2")
app = QApplication()
win = From()
win.show() # 위젯에 출력
win.kfcgogo() # 콘솔창에 출력
app.exec()
from PySide6.QtWidgets import *
app = QApplication()
win = QWidget()
layout = QVBoxLayout() # 수직 배치형 박스 생성
# 수평 배치형 : QHBoxLayout
layout.addWidget(QPushButton('TOP')) # 버튼 위젯 추가
layout.addWidget(QPushButton('Bottom')) # 버튼 위젯 추가
win.setLayout(layout) # 부모 Widget에 붙이기
win.show()
app.exec()
from PySide6.QtWidgets import *
app = QApplication()
win = QWidget()
mL = QVBoxLayout()
HL = QHBoxLayout()
BL = QVBoxLayout()
mL.addLayout(HL)
mL.addLayout(BL)
HL.addWidget(QPushButton("ONE"))
HL.addWidget(QPushButton("TWO"))
HL.addWidget(QPushButton("THREE"))
BL.addWidget(QPushButton("ONE"))
BL.addWidget(QPushButton("TWO"))
BL.addWidget(QPushButton("THREE"))
win.setLayout(mL)
win.show()
app.exec()
from PySide6.QtWidgets import *
app = QApplication()
win = QWidget()
alert = QMessageBox()
alert.setText("HI HI HI")
alert.exec()
win.show()
app.exec()
from PySide6.QtWidgets import *
app = QApplication()
win = QWidget()
lay = QHBoxLayout()
lay.addWidget(QListWidget(win)) # win 위젯에 소속되도록 함
lay.addWidget(QPushButton("click",win))
win.setLayout(lay)
win.show()
app.exec()