반응형

Qt 26

PyQtGraph 다른 모니터로 윈도우 이동시 그래프가 깨지는 현상 해결 방법

PyQtGraph를 사용할때 모니터가 2개이상인 경우 다른 모니터로 윈도우를 이동시 그래프가 깨지는 현상이 발생합니다. 이 문제를 해결하는 방법을 다룹니다. 2024. 2. 21 최초작성 PyQtGraph는 pyQT에서 그래프를 그릴때 유용한 라이브러리입니다. PyQt5 그래프 그리기 - PyQtGraph 예제 https://webnautes.tistory.com/2270 다음 코드를 추가한 후, 해결됩니다. import platform import ctypes if platform.system()=='Windows' and int(platform.release()) >= 8: ctypes.windll.shcore.SetProcessDpiAwareness(True) 참고 https://stackoverf..

Qt/PyQt5 강좌 2024.02.21

PyQt5 그래프 그리기 - PyQtGraph 예제

PyQtGraph 라이브러리를 사용하여 PyQt에서 그래프 그리는 예제 코드입니다. 2024. 2. 5 최초작성 다음 2개의 패키지를 설치해야 합니다. pip install pyqtgraph PyQt5 디폴트 배경색은 검은색이기 때문에 흰색으로 변경할 필요가 있습니다. 아래 예제 코드에서는 setBackground 메소드에 w를 지정하여 배경색이 흰색이 됩니다. import pyqtgraph as pg from PyQt5 import QtWidgets class MainWindow(QtWidgets.QMainWindow): def __init__(self): super().__init__() # Temperature vs time plot self.plot_graph = pg.PlotWidget() se..

Qt/PyQt5 강좌 2024.02.05

PyQt5와 QML을 사용하는 간단한 예제

PyQt5와 QML을 사용하는 간단한 예제코드입니다. 2023. 12. 9 최초작성 QML을 사용하여 UI를 따로 분리할 수 있다는 것을 알면서도 사용을 꺼렸는데 이렇게 UI를 분리하는 것도 괜찮겠다 싶어 간단한 예제 코드로 시도해보았습니다. 실행하면 중앙에 버튼이 있는 윈도우가 보입니다. 버튼을 클릭할때마다 메시지 박스가 보이게 됩니다. 확인을 클릭하면 메시지 박스가 사라집니다. 코드는 UI를 정의한 main.qml 파일과 PyQt5 코드를 작성해놓은 main.py 파일로 구성됩니다. main.qml QML을 사용하여 윈도우를 생성하고 중앙에 버튼을 배치합니다. 버튼이 클릭되면, 파이썬 코드 파일 main.py에 정의된 mainWindow 클래스에 있는 showMessage() 함수가 호출됩니다. im..

Qt/PyQt5 강좌 2023.12.11

logging과 PyQt5를 사용하여 로그창 구현

logging과 PyQt5를 사용하여 로그창을 구현한 예제입니다. 텍스트 파일에도 로그창에 보이는 내용이 따로 저장됩니다. 2022. 07. 21 최초작성 2022. 10. 30 한글 메시지 저장시 깨지는 현상 해결 2023. 06. 14 최종수정 - QTextEditLogger에 보여지는 로그 지우는 버튼 추가 Test Me 버튼을 클릭하면 로그가 추가됩니다. Clear 버튼을 클릭하면 QTextEditLogger에 보여지던 로그가 모두 지워집니다. 전체 소스코드입니다. import sys from PyQt5 import QtWidgets import logging date_strftime_format = "%d-%b-%y %H:%M:%S" message_format = "%(asctime)s - %(..

Qt/PyQt5 강좌 2023.10.22

PyQT5에서 slot이 thread-safe인지 테스트 해봤습니다

PyQT5에서 시그널이 thread-safe하다는 말을 발견하고는 여러 개의 스레드에서 시그널을 발생시켜 동일한 슬롯 함수를 호출할 때 문제가 없는지 테스트 해보았습니다. https://stackoverflow.com/questions/68287979/pyqt5-are-pyqtsignals-thread-safe 2023. 5. 18 최초작성 3개의 스레드에서 루프를 돌며 pyqtSignal을 사용하여 하나의 슬롯을 반복적으로 호출하도록 했습니다. import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout from PyQt5.QtCore import pyqtSignal, QThread from PyQt5.QtC..

Qt/PyQt5 강좌 2023.10.22

QApplication의 인스턴스를 생성할 때 sys.argv를 전달해야 하는 이유

QApplication의 인스턴스를 생성할 때 sys.argv를 전달해야 하는 이유를 다루고 있습니다. 2022. 9. 12 최초작성 모든 응용 프로그램이 작동하려면 QApplication 객체가 필요합니다. 이 객체는 GUI와 사용자 간 상호 작용을 제어하는 응용 프로그램의 기본 이벤트 루프를 시작하고 유지합니다. PyQt로 응용 프로그램을 개발할 때 다음처럼 QApplication 인스턴스를 생성하고 sys.argv를 전달했습니다. import sys from PyQt5.QtWidgets import QApplication app = QApplication(sys.argv) print(sys.argv) 다음처럼 실행하면 sys.argv의 내용을 출력해줍니다. sys.argv에는 커맨드라인에서 파이썬 ..

Qt/PyQt5 강좌 2023.10.22

PyQt5 예제 - QTreeView으로 json 로드하기 및 저장하기

QTreeView에 json을 로드하여 보여주고 QTreeView에서 수정한 결과를 다시 json으로 저장하는 예제 코드입니다. 2022. 8. 17 최초작성 2022. 8. 18 추가관련 구현 처음 실행하면 ini 파일이 없기 때문에 코드에 넣어둔 디폴트 값을 사용하여 QTreeView를 채웁니다. 이후에는 생성된 ini 파일에서 로드하여 보여줍니다. QTreeView의 항목을 더블 클릭하여 원하는 항목을 변경할 수 있습니다. 마우스 우클릭하여 보이는 메뉴에서 QTreeVIew의 항목을 추가하거나 삭제할 수 있습니다. 트리구조에서 위치한 레벨에 따라 보이는 메뉴가 다릅니다. 프로그램 종료시 QTreeView에 있는 내용을 ini 파일에 저장합니다. 전체 소스 코드입니다. import os, sys, j..

Qt/PyQt5 강좌 2023.10.22

PyQt5 예제 - QListWidget

이미지와 텍스트를 리스트뷰 형태로 보여주는 간단한 QListWidget 예제 입니다. 2022. 8. 16 최초작성 실행하면 리스트뷰의 한 줄당 이미지와 텍스트가 보입니다. 전체 소스코드입니다. from PyQt5 import QtWidgets from PyQt5 import QtGui from PyQt5 import QtCore import sys def get_item_widget(image, text): widget = QtWidgets.QWidget() horizontal_layout = QtWidgets.QHBoxLayout() label = QtWidgets.QLabel() label.setFixedSize(200, 200) pixmap = QtGui.QPixmap(image).scaled(2..

Qt/PyQt5 강좌 2023.10.22

PyQt5 예제 - connect에서 slot 함수에 아규먼트 전달하기

connect에서 slot 함수에 아규먼트를 전달하는 PyQt5 예제입니다. 2022. 8. 16 최초작성 프로그램을 실행한 후, 버튼을 클릭하면 connect에서 slot 함수에 전달한 아규먼트를 화면에 출력해줍니다. 전체 소스코드입니다. import sys from PyQt5.QtWidgets import QApplication, QDialog, QPushButton, QHBoxLayout from PyQt5.QtCore import pyqtSlot, QSize class MyDialog(QDialog): def __init__(self): super().__init__() self.setMinimumSize(QSize(300, 200)) horizontal_layout = QHBoxLayout() ..

Qt/PyQt5 강좌 2023.10.22

PyQt5 예제 - QStackedWidget

간단한 QStackedWidget 예제입니다. 2022. 8. 14 최초작성 버튼위에 QStackedWidget를 위한 영역이 존재합니다. STACK 1과 STACK 2 버튼을 누름에 따라 이 영역에 다른 레이어를 보여줍니다. 전체 소스코드입니다. import sys from PyQt5.QtWidgets import QVBoxLayout, QHBoxLayout, QWidget, QStackedWidget, QPushButton, QLabel, QDialog, QApplication from PyQt5.QtGui import QPixmap class MainDialog(QDialog): def __init__(self): super().__init__() vertical_layout = QVBoxLayou..

Qt/PyQt5 강좌 2023.10.22
반응형