본문 바로가기

Software95

PyQt5 오버레이 레이어 Ver.2 어제 업로드했던 오버레이 레이어의 업그레이드 버전입니다. PyQt5 오버레이 레이어 PyQt에서 특정 위젯을 오버레이 하는 레이어를 만드는 방법입니다. 아래 그림과 같은 윈도우에서 하단 PushButton을 누를 때마다 TextEdit창을 덮는 붉은색 레이어가 나타났다가 사라집니다. 먼저 Qt De kwonkyo.tistory.com 오버레이 레이어 구현 방법을 찾아보게 된 계기는 시간이 오래 걸리는 동작을 하고 있을 때 동작중임을 시각적으로 표현하고 사용자의 추가 입력을 제한해야 하는 상황에 사용하기 위해서였습니다. 그래서 좀 더 로딩 화면처럼 보이도록 수정한 버전입니다. 일정 시간 동안 로딩 동그라미가 돌아가고 동시에 잔여 카운터가 얼마인지 숫자로 표시되도록 만들어 봤습니다. 아래는 소스코드입니다. .. 2020. 12. 3.
PyQt5 오버레이 레이어 PyQt에서 특정 위젯을 오버레이 하는 레이어를 만드는 방법입니다. 아래 그림과 같은 윈도우에서 하단 PushButton을 누를 때마다 TextEdit창을 덮는 붉은색 레이어가 나타났다가 사라집니다. 먼저 Qt Designer로 GUI 폼을 만들어 줍니다. 여기서는 템플릿으로 위젯을 사용했습니다. 새 폼 만들기메뉴에서 "Widget"을 선택하고 생성을 눌러줍니다. "verticalLayout"안에 "pushButton"과 "textEdit"를 배치합니다. 그리고 폼 빈 공간에 마우스 우클릭하여 "배치 > 격자형으로 배치"를 선택합니다. 아래와 같은 폼 디자인이 완성되었습니다. 파일이름을 "overlay.ui"로 저장합니다. 이제 파이썬 코드를 작성해 줍니다. from PyQt5.QtCore import .. 2020. 12. 2.
PyQt5, QtableWidget 컬럼 너비 자동 조정 PyQt5에서 QtableWidget을 사용할 때 컬럼 너비를 조정하는 방법입니다. 방법1 table = self.ui.tableWidget table.setColumnWidth(0, self.width()*1/10) table.setColumnWidth(1, self.width()*2/10) table.setColumnWidth(2, self.width()*5/10) table.setColumnWidth(3, self.width()*2/10) 테이블의 컬럼은 4개가 있다고 가정하고 각 컬럼의 너비를 일정한 비율로 조정합니다. 컨텐츠 길이의 장단에 관계없이 정해진 비율대로만 조정합니다. 방법2 table = self.ui.tableWidget header = table.horizontalHeader() .. 2020. 9. 8.
Visual Studio Code로 만드는 파이썬 개발 환경 개인적으로 지금까지 파이썬 공부를 즐기지 못한 이유 중에는 IDE가 썩 맘에 들지 않았다는 점이 있는데요. 원래 저는 Visual Studio(VS) 신봉자라서 VS에서 C++과 아두이노 그리고 파이썬까지 모두 사용하고자 했습니다. 모든 걸 하나로 끝내려는 건 욕심이었는지, C++는 원래 VS의 기본적인 지원언어이고 아두이노도 C++ 기반이라서 VS의 개발환경은 매우 쾌적했지만 파이썬은 그렇지 못했습니다. 물론 파이썬을 더 편리하게 사용할 수 있게 해주는 확장 프로그램이 있는 것 같지만 유료이고 파이참이나 다른 파이썬에 맞추어진 IDE와 비교하면 이게 정말 VS가 맞나 싶게 뭔가 부족한 느낌이라 사용을 꺼리게 되었습니다. 그러다가 VS Code를 사용하기 시작했는데 파이썬도 지원하고 아두이노도 VS에서 .. 2020. 7. 17.
pyinstaller - 파이썬 코드를 실행파일(.exe)로 변환 ".py" 확장자의 파이썬 코드는 매우 작은 용량이지만 방대한 일을 처리할 수 있는 신기한 파일입니다. 하지만 컴퓨터에 파이썬 interpreter가 설치되어 있어야 하고 코드에서 사용한 다양한 라이브러리들이 모두 설치가 되어 있어야만 실행이 가능합니다. 그래서 내가 짠 코드를 다른사람에게 배포하기가 까다롭습니다. 이럴때 ".exe"의 실행파일로 묶어서 배포할 수 있게끔 하는 "pyinstaller"를 이용하는 방법입니다. (윈도우 환경에서 IDE로 Visual Studio를 사용하는 기준입니다. 참고해주세요.) pyinstaller 설치 먼저 파이썬에서 pip명령어로 pyinstaller를 설치합니다. >>> pip install pyinstaller Visual Studio환경에서 pyinstalle.. 2020. 7. 9.
[C++/MFC 핵심노트] Function(함수) - call by value & call by reference 2021-04-15 update log: 기존에 사용한 예제가 C언어 스타일이라서, C++ 스타일의 예제 코드를 추가하였습니다. 함수에 Argument(아규먼트)를 전달하는 방법에는 2가지 가 있습니다. 값을 전달하는 방법과 참조를 전달하는 방법이 있는데요. 많은 곳에서 call by value, call by reference라는 이름으로 한 번쯤 보신 적이 있을 겁니다. call by value와 call by reference 차이점 call by value라는 건 Argument(인자)의 값을 그대로 함수의 Parameter(매개변수)에 복사를 해서 사용하는 방법이고, call by referece는 Argument의 참조만 복사를 해서 함수의 Parameter로 사용하는 것을 말합니다. 저의 이.. 2019. 11. 6.
[C++/MFC 핵심노트] Function(함수) 함수는 명령어들의 그룹이라고 할 수 있습니다. 여러가지 명령어들을 하나로 묶어서 함수로 만들어 놓으면 이 덩어리를 호출하는것 만으로 내부의 명령어들을 사용할 수 있도록 만들어 둔 개념입니다. 함수의 구문 함수라는 건 이런 구조로 되어 있습니다. 반환형 함수명(파라미터 목록) { 명령어 명령어 . . } 반환형: 함수가 반환하는 데이터의 타입 함수명: 함수의 이름, 함수를 호출할 때 사용됨 파라미터: 함수를 호출할 때 아규먼트를 함수로 전달을 하게되는데 이 값은 파라미터로 참조가 됨. 파라미터 리스트는 타입 순서 그리고 개수를 나타내여야 한다. 파라미터는 생략가능 명령어: 함수가 실제로 수행해야하는 일들을 중괄호({, }) 안에 작성 "함수명"으로 함수를 호출하면 함수 내부의 명령어들이 차례대로 수행되기 .. 2019. 11. 6.
문자열 상호 형변환, char* ↔ std::string ↔ CString ↔ std::stringstream 문자열간 형변환 방법입니다. 워낙 많이 쓰이기 때문에 자료가 많긴하지만 매번 찾아보는것도 귀찮아서 정리했습니다. char* ↔ std::string char* to string #include char c[256] = "Hi there"; std::string str(c); // OR std::string str = c; string to char* #include std::string str = "Hi there"; const char* c = str.c_str(); string 을 char* 로 변환하기 위해서는 const char*을 사용해야 함. 이경우 당연히 수정이 불가능 수정가능한 문자열로 만들고 싶을때는 동적할당을 통한 메모리 복사를 해야함 #include std::string str = ".. 2019. 10. 22.
strcpy_s, wcscpy_s, _mbscpy_s, _tcscpy_s - 문자열 복사 strcpy_s, wcscpy_s, _mbscpy_s, _tcscpy_s 용도 문자열을 복사하는데 사용하고 strcpy함수의 보안이 강화된 버전 구문 #include #include // _mbscpy_s 함수용 template // Template functions are C++ only: errno_t strcpy_s(char (&dest)[size], const char *src); template errno_t wcscpy_s(wchar_t (&dest)[size], const wchar_t *src); template errno_t _mbscpy_s(unsigned char (&dest)[size], const unsigned char *src); template errno_t _mbscpy_s.. 2019. 10. 15.
[라이브러리] C++ 라이브러리, Boost 빌드하고 사용하기 Boost Libraries C++ 개발자라면 누구나 사용한다는 "Boost"를 이제서야 알게되어 설치(?)를 해 봤습니다. 공식 홈페이지에서 필요한 자료들을 받아서 빌드하고 Visual Studio에서 사용할 수 있도록 하는 방법입니다. Boost C++ Libraries Welcome to Boost.org! Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work well with the C++ Standard Library. Boost libraries are intended to be widely useful, and usable across a broad spectrum of .. 2019. 10. 8.
MFC그래프 라이브러리, ChartCtrl 마우스 휠 기능 추가 C++/MFC에서 다양한 그래프를 손쉽게 그릴수 있도록 해주는 오픈소스 라이브러리인 ChartCtrl 관련 포스팅입니다. 해당 라이브러리에 대한 소개와 간단 사용법은 관련 포스팅에서 확인해 주세요. 'ChartCtrl' 태그의 글 목록 블로그 EveryX 입니다. C++, Python, Arduino등 학습노트로 시작했고, 신기하고 재미있는 제품 리뷰와 맛집/여행에 대한 추억도 남기고 있습니다. kwonkyo.tistory.com 이 라이브러리는 정말 잘 만들어진 라이브러리라서 다양한 기능들이 구현이 되어 있어 사용하기에 편리합니다. 그런데 사용을 하다보면 아쉬는 기능이 하나둘 보이기마련이죠. 이럴때 이런 오픈소스 라이브러리의 잠재력이 드러납니다. 오래 된 코드이긴 하지만 프로그래밍을 배우고 있는 입장에.. 2019. 10. 7.
MFC 그래프 라이브러리, Chart Control 기본 사용법 - 보통그래프 및 봉차트 그리기 2022-01-14 update log: 코드 중 오타 수정. 이전 포스팅에서 소개했던 그래프를 그려주는 MFC 라이브러리, Chart Control의 기본 사용법입니다. CodeProject에도 기본 사용법이 잘 나와있지만 저같은 초보는 맘먹고 정독해야 겨우 이해할 수 있기 때문에 그 겨우 이해한 내용을 기록으로 남깁니다. 라이브러리 소스는 아래 포스팅 참고하시면 됩니다. [라이브러리] MFC 그래프 라이브러리 - High-speed Charting Control MFC용 그래프 그리는 라이브러리를 소개합니다. Codeproject사이트에 등록된 소스인데 X-Y 기본 그래프 뿐만아니라 캔들스틱, 바차트 등 다양한 기능을 지원하는 라이브러리 입니다. 원본 출처: https://www.cod.. kwonk.. 2019. 10. 5.
[라이브러리] MFC 그래프 라이브러리 - High-speed Charting Control (ChartCtrl) MFC용 그래프 그리는 라이브러리를 소개합니다. Codeproject사이트에 등록된 소스인데 X-Y 기본 그래프 뿐만아니라 캔들스틱, 바차트 등 다양한 기능을 지원하는 라이브러리 입니다. 소스 출처: https://www.codeproject.com/Articles/14075/High-speed-Charting-Control 제작자가 공개한 라이브러리의 원본파일입니다. Codeproject사이트에서 직접받을 수도 있지만 혹시나 없어질까봐 하나 받아두었습니다. 그리고 원본소스는 컴파이시에 유니코드 주의가 발생해서 아래는 유니코드로 다시 저장한 버전입니다. 코드내용은 동일합니다. 사용조건 다음은 제작자가 허용한 소스이 사용조건입니다. 기본적으로 상업적 이용도 허용한다고 하네요. This code may be.. 2019. 9. 20.
fscanf_s, fwscanf_s, fscanf_s, _ftscanf_s - 형식이 정해진 문자열 읽기 fscanf_s, fwscanf_s, fscanf_s, _ftscanf_s 용도 형식이 정해진(formatted) 문자열에서 데이터를 읽을때 사용하는 함수 구문 #include int fscanf_s( FILE *stream, const char *format [, argument ]... ); int _fscanf_s_l( FILE *stream, const char *format, locale_t locale [, argument ]... ); int fwscanf_s( FILE *stream, const wchar_t *format [, argument ]... ); int _fwscanf_s_l( FILE *stream, const wchar_t *format, locale_t locale [, .. 2019. 9. 19.
SQLite 시작을 위한 기초 중에 기초만 요약 - CREATE TABLE, INSERT, DELETE, UPDATE, REPLACE SQLite DB를 사용하기 위해서 알아야 하는 최소한의 기본 명령을 정리하였습니다. 파이썬에서 SQLite를 연결해서 DB를 사용해보고싶었는데 전혀 기초가 없어서 기본적인 작업을 할 수 있는 기초중에 기초만 우선 훑었습니다. 원본문서는 아래 페이지입니다. 상세내용은 여기서 확인하세요. 그리고 SQLite를 사용함에 있어서 가장 중요한 명령어인 "SELECT"는 그 활용법이 너무 방대하여 별도로 다룰얘정입니다. SQLite Tutorial - An Easy Way to Master SQLite Fast This SQLite tutorial teaches you everything you need to know to start using SQLite effectively. You will learn SQL.. 2019. 7. 18.