Language/Python 8

[파이썬] 에러 로깅 클래스

Error Logging개요   파이썬으로 프로그램을 개발하여 exe 파일로 빌드한 후 테스트할 때, 종종 콘솔창을 제외한 형태로 실행 파일을 만들곤 한다. 하지만 이 경우 오류가 발생하더라도 콘솔창이 없어 문제를 파악하기가 어렵다. 이러한 실행 파일의 런타임 환경 등에서 발생하는 오류를 기록하기 위해 사용하는 모듈이 바로 logging이다. 이번 시간에는 이 logging 모듈을 활용해, 프로그램 실행 중 에러가 발생하면 같은 디렉터리에 에러 내용을 담은 텍스트 파일을 자동으로 생성하는 클래스를 구현해 보겠다. 본문 로깅 모듈을 통해 에러를 검출하고 처리하기 위한 최소한의 구성 요소는 다음과 같다.  1. 로그 레벨: 로깅 모듈에서는 로그를 다음과 같은 레벨로 나눈다. 로그를 남길 메시지의 특성에 따라..

Language/Python 2024.09.28

[파이썬] GUI(tkinter) 멀티스레딩 with CAN Message

GUI Multithreading개요  지난 파이썬 tkinter를 다루는 게시글엔 화면의 배율에 따라 위젯들의 크기가 동적으로 변하는 것에 대해 학습하였다. 이번 시간에는 특정 이벤트가 발생할 때마다 해당 내역을 업데이트 방법에 대한 내용을 다뤄보도록 하겠다. 본문개념  본격적인 내용에 들어가기에 앞서, 동기/비동기, 동시성/병렬성, 그리고 멀티쓰레딩/멀티프로세싱의 개념을 알고 있으면 이해가 훨씬 수월하다. 필자는 이 개념들을 해당 블로그를 통해 참고했으며, 만약 아직 해당 개념에 대한 이해가 부족하다면, 블로그 등을 통해 먼저 확인하는 것을 추천한다. 다만, 이 개념들이 다소 복잡하고 어려울 수 있지만, 실무에서 이를 구현하는 데 있어 반드시 완벽한 이해가 필요하지는 않다.   오늘의 목표는 'CAN..

Language/Python 2024.09.27

[파이썬] 반응형 GUI

화면 해상도(DPI) 인식개요  GUI 프로그램을 개발할 때는 다양한 디스플레이 환경을 고려해야 한다. 예를 들어, 동일한 1920 x 1080 해상도에서도 디스플레이 배율에 따라 프로그램의 크기와 배치가 달라질 수 있다. 따라서 디스플레이 해상도와 배율을 적절히 반영하는 것이 중요하다. 이전에 C# WinForm에서는 이를 다뤘지만, 이번에는 파이썬을 사용해 디스플레이 환경을 고려하는 방법을 살펴보도록 하겠다. 본문ctypes  ctypes는 파이썬에서는 외부 C 라이브러리에 쉽게 접근할 수 있게 해주는 모듈이다. C와 파이썬은 서로 다른 데이터 타입을 사용하지만, ctypes는 파이썬 타입을 C 데이터 타입에 매핑하는 기능을 제공한다. 일반적으로 플랫폼 의존적인 기능에 대한 직접적인 접근과 정확성을 ..

Language/Python 2024.09.23

[파이썬] tkinter (2) - PDF 페이지 추출 프로그램

tkinter 개요   지난 시간에는 GUI에서 기초적인 라벨을 생성하고 창을 띄우는 작업을 해보았다. 이번 시간에는 이미지를 삽입하고 버튼을 생성하여 이벤트를 할당하는 방법에 대해 알아보겠다. 또한 입력을 받는 Dialog를 생성하여입력을 받고, 이를 이용한 프로그램을 만들어 보겠다.본문위젯 - 백그라운드 이미지 설정   오늘의 목표는 버튼을 클릭하면 PDF 파일을 선택하는 창이 뜨고, 해당 PDF 파일에서 특정 페이지를 추출하는 프로그램을 만드는 것이다. 먼저 그럴싸한 프로그램을 만들기 위해 백그라운드 이미지를 설정할 것이다. 이미지를 다루기 위해 다음과 같이 pillow 라이브러리를 설치하자.  pip install pillow   PIL(Python Imaging Library)은 Python에서..

Language/Python 2024.06.29

[파이썬] tkinter (1)

tkinter개요  파이썬에는 다양한 GUI(Graphical User Interface) 라이브러리가 존재한다. 그중, Python 표준 라이브러리인 tkinter는 Python과 함께 배포되므로 별도의 설치가 필요하지 않다. 이번 시간에는 해당 라이브러리를 통해 간단하게 GUI를 생성하는 방법에 대해 알아보도록 하겠다.GUI: 사용자가 컴퓨터와 상호작용할 수 있는 시각적 인터페이스. 텍스트 기반 인터페이스와 달리 아이콘, 버튼, 윈도우, 라벨 등 시각적 요소를 사용하여 직관적이고 사용하기 쉽게 만들 수 있다본문위젯 - 윈도우(Window)   윈도우는 기본적인 애플리케이션 창을 의미한다. Tkinter에서 하나의 기본 창을 생성하고 실행하는 방법을 예제로 설명해 보겠다. import tkinter a..

Language/Python 2024.06.24

[Python] PDF 텍스트 추출

PDF 텍스트 추출 개요 대학교에서 하는 수업들은 대게 PDF로 진행한다. 그래서 해당 내용을 정리할 때 PDF에 있는 텍스트 내용을 추출하면 편한 경우가 많다. 구글에 PDF 텍스트 추출을 검색하면 다양한 플랫폼이 나오지만, 직접 커스터마이징을 하고 싶어 파이썬으로 구현해 보았다. 본문 PyPDF2 파이썬에서는 Python으로 작성된 PDF 파일을 다루기 위한 라이브러리다. 이 라이브러리를 사용하면 PDF 파일을 읽고, 쓰고, 분할하는 등 다양한 작업을 수행할 수 있다. 이번 시간에는 파일을 읽는 것이 목적이므로 관련 함수인 PdfReader에 대해 알아보자. 일반적으로 PdfReader는 페이지 수 얻기, 개별 페이지 접근 등 다양한 읽기가 가능하다. 아래는 그 예제이므로 참고하자. # PDF 파일 ..

Language/Python 2023.10.31

[Python] matplotlib(1)

matplotlib 개요 matplotlib는 파이썬의 시각화 라이브러리로, 다양한 그래프와 차트를 생성하는 데 사용된다. 보통 numpy 혹은 pandas와 묶어서 배열을 바로 그래프로 시각화할 때 자주 사용하는데, 이번 시간에는 간단한 예제들을 통해 어떻게 그래프를 플로팅하는지 알아보도록 하자. 본문 설치 및 임포트 pip install matplotlib 커맨드창에 matplotlib를 설치하기 위해 해당 명령어를 실행시키자. from matplotlib import pyplot as plt import matplotlib.pyplot as plt 기본적인 그래프 모듈은 pyplot을 사용하며, 임포트는 관례적으로 plt를 약어로 사용한다. 그래프 그리기 pyplot.plot() pyplot.sho..

Language/Python 2023.09.12

[Python] 클립 보드 with Python

클립 보드 개요 클립 보드 기능은 우리가 효율적으로 데이터를 관리하고 사용할 수 있게 한다. 우리는 일반적으로 텍스트를 복사하거나 붙여 넣을 때 이 클립 보드를 사용하지만, 이보다 더 다양한 활용법이 존재한다. 지난 게시글에서 클립 보드에 저장된 이미지를 특정 하위 디렉토리에 png 형식의 파일로 저장하는 방법에 대해 간략하게 소개하였다. 이번 글에서는 ImageGrab에 대해 좀 더 자세히 탐구하고, 클립 보드를 통한 이미지 관리법에 대해 알아보자. 본문 이 코드는 사용자가 클립 보드에 이미지 파일을 저장한 경우, 해당 이미지를 example.png라는 파일로 저장하는 프로그램이다. 이를 위해선 PIL(Python Imaging Library)이라는 라이브러리를 활용한다. PIL은 파이썬에서 이미지 처..

Language/Python 2023.07.29