본문 바로가기

QtDesigner

logging을 이용한 ui 내 로그 출력 QtDesiger로 그린 화면에 프로그램의 로그를 출력해보자. 핵심은 logging.handler를 상속받은 사용자 정의 핸들러를 이용하는 것이다. 우선 핸들러를 하나 만들자. class LogStringHandler(logging.Handler): def __init__(self, target_widget): # 포맷터 및 레벨, 출력할 대상 위젯 설정 super(LogStringHandler, self).__init__() self.target_widget = target_widget def emit(self, record): # 대상 위젯에 로그 내용을 추가한다. self.target_widget.append(record.asctime + ' -- ' + record.getMessage())​ 생성.. 더보기
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) .. 더보기