프로그래밍 298

[Python] Qt - QWidget 사라질 때, 처리하는 방법

개요 부모 클래스를 상속한 하위 클래스에서 여러 컨트롤을 추가하거나, 리소스를 사용하고 반환하려면 일반적으로 생성자에서 사용할 리소스를 만들거나 얻은 후, 소멸자에서 사용한 리소스를 반환하게 됩니다. 하지만, Python의 Qt에서는 gc의 의하여 때에 따라서 소멸자가 제대로 호출되지 않을 수도 있기 때문에 소멸자에서 사용한 리소스를 반환하는 것은 위험하고, 아래에 설명드리는 것과 같이 위젯이 닫힌다는 이벤트에서 처리합니다. QWidget.closeEvent() 오버라이딩 QtWidget에서 closeEvent() 메서드를 오버라이딩하여 위젯이 닫힐 때 필요한 작업(리소스 반환 등)을 수행할 수 있습니다. closeEvent() 메서드는 위젯이 닫힐 때 호출되는 이벤트 핸들러로서, 이 메서드를 오버라이딩..

[Python] JSON 문자열 다루기

개요 JSON 문자열을 dict로 변환하거나, 반대로 dict를 JSON 문자열로 변한하여 처리하는 방법을 알아보겠습니다. dict를 JSON 문자열로 변환하기 간단하게 json.dumps() 함수를 이용하면 됩니다. from json import dumps json_str = dumps(['foo', {'bar': ('baz', None, 1.0, 2)}]) print(json_str) """ Result>>> ["foo", {"bar": ["baz", null, 1.0, 2]}] """ 주의할 점은 한글과 같이 UTF 문자열 데이터가 포함되어 있는 dict를 dumps() 함수로 문자열로 변환을 시도하면 다음과 같이 인코딩되어 변환되기 때문에 바로 읽을 수가 없게 됩니다. from json impor..

[Python] E8363C Network Analyzer 화면캡쳐하기 (PyVISA)

개요 PyVISA를 이용하여 E8363C Network Analyzer 계측기의 현재 화면을 그대로 캡쳐하여 가져오는 방법을 알아 보도록 하겠습니다. 반복되는 내용은 이전 글인 "E4446A Spectrum Analyzer 화면캡쳐하기 (PyVISA)"를 참고하시기 바랍니다. SCPI 명령을 이용한 화면캡쳐하기 아래는 E8363C Network Analyzer 계측기의 현재 화면을 캡쳐하여 가져와 파일로 저장하는 코드입니다. from pyvisa import ResourceManager _host = '192.168.0.47' _port = 5000 rm = ResourceManager() # visa 객체를 생성합니다. # 지정한 HOST와 PORT를 사용하여 계측기에 접속합니다. pna_client ..

[Python] E4446A Spectrum Analyzer 화면캡쳐하기 (PyVISA)

개요 PyVISA를 이용하여 E4446A Spectrum Analyzer 계측기의 현재 화면을 그대로 캡쳐하여 가져오는 방법을 알아 보도록 하겠습니다. SCPI 명령을 이용한 화면캡쳐하기 아래는 E4446A Spectrum Analyzer 계측기의 현재 화면을 캡쳐하여 가져와 파일로 저장하는 코드입니다. from pyvisa import ResourceManager _host = '192.168.0.47' _port = 5025 rm = ResourceManager() # visa 객체를 생성합니다. # 지정한 HOST와 PORT를 사용하여 서버에 접속합니다. psa_client = rm.open_resource(f'TCPIP{_port}::{_host}::INSTR') print (psa_client...

[Python] pytube에서 "KeyError('streamingData')" 오류 발생 문제

문제점 및 증상 pytube를 이용하여 개인적인 유튜브 영상 다운로더를 만들어서 이용하고 있었는데, 얼마전부터 계속하여 "KeyError('streamingData')" 오류가 발생하며 영상 다운로드가 실패하였습니다. KeyError: 'streamingData' 해결 과정 구글 검색을 통하여 여러 가지를 확인해 보니, pytube 패키지를 새로 설치해보라는 것들이 많아서 "pytube"를 제거하고, "pytube3"를 설치해보고 하였으나 오히려 다른 문제가 발생하였습니다. ... File "C:\Dev\Python\Python310\lib\urllib\request.py", line 563, in error return self._call_chain(*args) File "C:\Dev\Python\Py..

[Python] Qt5 UI의 폰트 및 컨트롤이 깨져서 표시되는 문제

개요 마소의 서피스 노트북을 이동할 때 이용하고 있는데, 동일한 UI 소스를 실행했는데, PC에서는 정상적으로 표시되던 UI가 서피스 노트북에서는 다음과 같이 원래 모습과 다르게 나오는 현상이 발생하였습니다. 해결 방법 가장 손쉬운 방법은 프로그램의 메인으로 가장 처음 실행되는 소스에 다음 환경설정 변수를 추가하는 방법입니다. from os import environ environ['QT_AUTO_SCREEN_SCALE_FACTOR'] = '1' # 모니터 해상도에 따른 폰트 및 컨트롤 크기 자동 조정 두 번째 방법은 Qt 설정을 직접 변경하는 방법입니다. from PyQt5 import QtWidgets, QtCore, QtGui QtWidgets.QApplication.setAttribute(QtCo..

[Python] error: (-215:Assertion failed) !_src.empty() in function 'cvtColor'

문제점 및 증상 잘 동작하던 코드를 다른 곳으로 복사하여 실행하였더니, 다음과 같은 오류가 발생하였습니다. (rknn) hunature@orangepi5:/opt/hunature/vpc_gabo/demo$ python rknn_demo1.py --> Load RKNN model done [ WARN:0@0.178] global loadsave.cpp:244 findDecoder imread_('./space_shuttle_224.jpg'): can't open/read file: check file path/integrity Traceback (most recent call last): File "/opt/hunature/vpc_gabo/demo/rknn_demo1.py", line 77, in img ..

[Python] PNA Network Analyzer에서 현재 화면 데이터 다루기

개요 Keysight PNA Network Analyzer (회로망분석기)를 이용하여 현재 측정되어 표시되는 데이터를 SCPI 명령을 이용하여 다루는 방법에 간단하게 정리해 둡니다. 화면 데이터 CSV로 저장하기 현재 화면에 표시되는 측정 데이터를 CSV 파일로 저장하는 SCPI 명령은 다음과 같습니다. MMEM:STOR:SCR 'filename.csv' 위 명령에서 "filename.csv"는 저장할 파일의 이름과 경로를 나타내는데, 확장자는 CSV를 사용해야 합니다. 예를 들어, C드라이브의 "Temp" 폴더에 "data.csv" 파일로 저장하고 싶다면, 다음과 같이 명령어를 입력하면 됩니다. MMEM:STOR:SCR 'C:\Temp\data.csv' 위와 같이 명령을 보내면, 현재 화면에 보이는 그..

[Python] RKNN_toolkit2를 이용한 onnx -> rknn 모델 변환 소스

개요 ROCK5 model B SBC를 구매하여 AI 모델 변환하는 소스를 작성하여 보겠습니다. onnx -> rknn 변환 소스 구현 동작 환경 구성은 Ubuntu 20.04 x86_64 OS에 도커를 이용하여, "RKNN_toolkit2" 패키지를 설치하였습니다. 다음은 "RKNN_toolkit2 v1.4.0"을 이용한 onnx -> rknn 모델 변환 소스입니다. # onnx to rknn converter (Python-3.8 tested) # date 2023-02-09 # author hbesthee@naver.com from argparse import ArgumentParser from rknn.api import RKNN DATASET = './dataset.txt' QUANTIZE_ON..

[Python] pytube로 영상 다운로드 시, 발생하는 'NoneType' object has no attribute 'span' 오류

문제점 및 증상 "pytube"로 영상 다운로드 시, 다음과 같은 오류가 발생하며 영상 다운로드가 실패하는 문제가 얼마전부터 발생하기 시작했습니다. YouTube('https://youtu.be/9bZkp7q19f0').streams.first() Traceback (most recent call last): File "", line 1, in YouTube('https://youtu.be/9bZkp7q19f0').streams.first() File "C:\Dev\Python\Python310\lib\site-packages\pytube\__main__.py", line 296, in streams return StreamQuery(self.fmt_streams) File "C:\Dev\Python\P..

728x90