파이참에서 venv > Scripts > pysid6-designer.exe를 실행시킵니다.
해당 메세지 뜨면, 하단 클릭 후 실행시키기!
파이참의 저장 경로
에 QT designer에서의 ui를 저장시키고, 파이참에서 QUiLoader ( ).load
함수를 통해 ui 파일을 불러올 수 있다.
from PySide6.QtWidgets import *
from PySide6.QtUiTools import *
app = QApplication()
main = QUiLoader().load('hi.ui') # 불러오기
main.show()
app.exec()
QT designer에서 변경 후 저장시 바로 실행해도 정상 작동
터미널창
에서 pyside6-uic [ui 파일명] -o [py 파일명 .py]
입력하면, ui파일을 py로 변환시켜준다.
from PySide6.QtWidgets import *
from hi_i import Ui_MainWindow # from [py 파일명] import [py 내부 class 명]
class MyApp(QMainWindow,Ui_MainWindow): # 여기도 MyApp(arg1, [py 내부 class 명])
def __init__(self):
super().__init__()
self.setupUi(self)
def main(self):
pass
app = QApplication()
main = MyApp()
main.show()
app.exec()
를 통해 실행시킵니다.
QT designer에서 변경 후 저장시 바로 실행해도 작동되지 않고, 다시 변환시켜줘야 정상 작동
객체 탐색기에서 원하는 객체명으로 바꾸어, 수월하게 코딩을 할 수 있도록 합니다.
Widget을 추가하여 꾸밀 수 있습니다.
Crtl + R
을 통해 미리보기 화면을 볼 수 있습니다.
Siganl / Slot을 통해 이벤트 시그널을 생성할 수 도 있습니다.
Layout을 쓰면 창 크기에 따라 위젯도 확대되는 Form 제작 가능하다.
임베디드에서 LCD의 해상도는 천자만별이라 범위가 매우 넓다. 따라서, 반응형 도구는 필수적이다.
Qt에서 반응형 GUI 개발 도구를 위한 네 가지 대표적인 Layout
1. VBox Layout : 세로 Layout
2. HBox Layout : 가로 Layout
3. Form Layout : Form 형태의 Layout
4. Grid Layout : 2 차원 격자에 해당하는 위젯
위젯들은 보통 반응형이 수평에만 적용된다. 따라서, Vertical Policy를 Fixed -> Minimum
or 'Expending'으로 변경해주면 된다.
QT desinger을 통해 메뉴 bar
, Action
, 초기값
등도 설정해줄 수 있다.
from PySide6.QtWidgets import *
from predict import Ui_MyWindow
import hashlib
class MyApp(QMainWindow,Ui_MyWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
def main(self):
pass
def clear(self):
self.textBox1.clear()
self.textBox2.clear()
self.spinBox.clear()
def check(self):
# hash 함수 : data를 중복확률이 적은 고유 숫자로 만들며, 통신 암호화 프로토콜에 사용됨
str1 = self.textBox1.text()
str2 = self.textBox2.text()
# IoT / HTTP 프로토콜에 많이 사용되는 sha256
hashCode1 = hashlib.sha256(str1.encode()).hexdigest() # hexdigest : 16진수 값으로 변경
hashCode2 = hashlib.sha256(str2.encode()).hexdigest()
# check 함수
sum1 = int(hashCode1, 16) + int(hashCode2, 16) # 16진수를 10진수로
sum2 = self.spinBox.value() * 777 #
result = (sum1 + sum2) % 101 # 0 ~ 100 수치로 반환
msg = QMessageBox()
msg.setIcon(QMessageBox.Warning) # 경고 아이콘 추가
msg.setWindowTitle("결과 확인") # 메세지 박스 제목
msg.setText("운명적으로, "+str(result) + "% 확률로 커플이 됩니다.")
msg.exec()
def bye(self):
self.close()
app = QApplication()
main = MyApp()
main.show()
app.exec()