본문 바로가기

pyqt

QtDesigner로 작성한 ui파일 로드 후 이벤트 주입 및 다루기 테스트로 작성한 윈도우에 신규 버튼과 이 버튼을 통한 테이블 제어, 상태바, 라벨, 텍스트 필드를 다뤄보려 한다. 버튼과 테이블, 상태바, 라벨, 텍스트 필드를 가진 윈도우화면은 아래와 같다. 테이블은 GroupBox 하위, ScrollBox 하위에 속하게 했고 버튼은 그룹 밖에 있다. 이 버튼과 테이블을 접근하기 위해서는 QtDesigner의 속성에서 objectName 잘 정해줘야 한다. 버튼은 testButton 테이블은 testTable 이제 각각에 함수를 만들어서 접근해보자. import sys from PyQt5.QtWidgets import * from PyQt5 import uic test_ui_class= uic.loadUiType("../ui/test_window.ui")[0] clas.. 더보기
QtDesigner로 만든 .ui파일을 .py로 바꾸지 않고 사용하기 QtDesigner로 만든 파일을 매번 python을 위해 바꾸는 건 고통스러운이다. 과거에 UI 바꾸고 컴파일하고 주입하고 하면서 노가다를 했었는데 정말 번거로웠다. 만든 ui파일을 넣고 그대로 사용하는 방법을 찾았다. 핵심은 uic를 import하고, 상속받은 클래스에서 ui 설정함수를 호출하는 것이다. import sys from PyQt5.QtWidgets import * from PyQt5 import uic test_ui_class = uic.loadUiType("../ui/test_window.ui")[0] class TestWindow(QMainWindow, test_ui_class): def __init__(self): super().__init__() self.setupUi(self) .. 더보기
직접코딩으로 PyQt 윈도우를 구성해보자 보통 PyQt QApplication를 인스턴스화 하고 이벤트 루프를 만들어서 UI와의 상호작용을 준비한다. 이제 상호작용할 UI를 만들어 보자. 이전에 클릭보다 더 다양하게 만들어서 쓸 수 있게 판을 깔고 시작하자. PyQt의 판을 위해 QMainWindow을 상속받은 클래스를 만들어서 이용하자. import sys from PyQt5.QtWidgets import * class TestWindow(QMainWindow): def __init__(self): super().__init__() if __name__ == "__main__": app = QApplication(sys.argv) app.exec_()​ 부모 클래스의 생성자를 super().__init__()으로 반드시 실행하도록 작성해야한다.. 더보기