프로그래밍/Python 99

[Python] 클래스 인스턴스 형변환 시, 주의할 점

파이썬에서 형변환은 꼭 필요하지 않습니다. 오히려 리터럴 형식의 변수에 대한 형변환을 제외하고는 굳이 형변환을 권장하지도 않는 것 같습니다.(지금 생각해 보니, 클래스 인스턴스의 형변환 자체가 필요없기도 하거니, 그런 문법이 없군요. ^^;) 특히나 클래스 인스턴스에 대한 형변환은 무의미할 정도입니다. 다음과 같은 코드를 보면, 어디서 문제가 있는지 감이 오신다면 다행이지만 저와 같이 델파이(파스칼)에 더 익숙한 개발자라면 도대체 문제가 뭔지 알 수가 없을 수 있습니다. (저도 왜 이게 문제가 되는 잘 몰랐습니다. ^^;) def handleGroupboxAllClick(self) -> None: """ 그룹박스 내 모든 체크박스의 선택을 토글하는 "All" 버튼 핸들러 : 모든 체크박스 항목의 선택을 ..

[Python] PySide2에서 'Python 코드 보기' 시, uic 관련 오류

문제점 새로 설치한 PC에서 파이썬을 설치한 이후에 PySide2를 설치하고 새로운 폼을 만든 후, "Python 코드 보기"를 실행하였더니, 다음과 같이 "uic"를 찾을 수 없다는 오류가 발생하였습니다. "코드 생성 실패" 오류 메시지 해결 방법 해결 방법은 간단합니다. "uic.exe" 파일을 검색하여 찾아보면, "PySide2" 패키지가 설치된 폴더에 함께 위치해 있습니다. "uic.exe" 파일이 있는 "PySide2" 패키지가 설치된 폴더로 가서, "bin" 폴더를 생성하고, 생성된 "bin" 폴더에 "uic.exe" 파일을 복사해 줍니다. 그리고 난 후, "Python 코드 보기"를 실행했을 때는 정상적으로 코드가 생성되어 표시됩니다.

[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' 위와 같이 명령을 보내면, 현재 화면에 보이는 그..

728x90