[TIL] PyQT 개발 후기

이미지
PyQT 에 라이센스 문제가 있고 들어서 애써 외면하고 있었는데, 어차피 배포할것도 아닌데 뭔 똥고집인가 싶었습니다. 마침 매우 불편하게 테스트하던 프로그램이 있어서 그걸 wrapping하는 GUI를 그려보았습니다. QT 개발을 5년이나 했기때문에 매우 익숙한 상태로 다음의 순서로 진행하였습니다. 1. Linux 상에서 PyQT 설치 2. Signal/Slot 사용 방법 익히기 3. Designer로 그리기 4. 실행 및 디버깅 5. 윈도우에 python과 pyqt 설치 6. 윈도우에서 실행 및 디버깅 이틀만에 완성. 익숙해지면 이건 뭐 하루에 몇개도 만들어내겠네요. 무아지경에 빠져서 슥슥 코딩하는데...숨통이 트이는 느낌이네요. 역시 코딩이 내가 있어야할 곳 인가 봅니다. 특히 리눅스에서 개발을 마친 다음 윈도우에 pyqt5 설치후 바로 실행해버리니 정말 기분 좋네요! PyQt4 Reference : http://pyqt.sourceforge.net/Docs/PyQt4/classes.html PyQt5 레퍼런스가 C++ QT5 레퍼런스로 링크가 되어있어서 PyQT4를 참조함      

[TIL] Segment fault PyQt5 in Ubuntu

죽는다.. $ python3 Python 3.5.2 (default, Nov 23 2017, 16:37:01) [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> from PyQt5 import * >>> from PyQt5.QtCore import * 세그멘테이션 오류 (core dumped) 싫다.. 검색해보니 api로 PyQt5 설치했으면 pip3로 설치해보라는군요. $ sudo pip3 install pyqt5 해결 되려나? 다운로드가 100kb/s 정도로 100MB임에도 10분 넘게 걸림. 10분후면 전 이미 퇴근해있을거라 ㅋㅋㅋ 내일 확인해야겠군요. 담날 : 잘 되네요! segment fault 나는 분들은 pip3 로 설치하세요~ 

[TIL] Windows 에서 PyQt5

이미지
설치하려고 검색해봤더니 스택오버플로우 형님이 그냥 다음 명령 내리랍니다. pip3 install pyqt5 cmd에서 하랍니다??? ....된다!? 그러고보니 이것저것 건드리면서 python3며 pip3며 다 깔아놨었군요. 여전히 100kb/s 의 지리한 속도를 보이며 느리게 다운로드 받습니다. QT designer는 다음과 같이 설치하랍니다. pip install PyQt5-tools 될대로 되라지 뭐... 설치 후 다음의 파일을 실행하면 된답니다. C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python35-32\Lib\site-packages\pyqt5-tools\designer 되네요! 뭐 이리 쉬워... 다음은 샘플을 만들어봐야겠죠. Widget 으로 만들고 PushButton과 Label을 추가해줍니다. <sample.ui로 저장> PyQt5 를 해보려는 이유가 제가 5년전에 5년동안이나 QT를 했었기때문에 매우 익숙합니다. 뭐든 익숙한걸로 시작하라더군요. 쓸데없이 이것저것 건드려보다가 아무것도 못하고 있는 내 자신이 한심해서 슬럼프에 빠져있다가 전문가들 칼럼같은거 읽어보니 그러더라구요. 익숙치않은 pyqt5가 기다리고 있지만 designer라도 익숙한게 어딘가요? 감사하게도 자료를 만들어둔 선배님의 코드를 가져다 적당히 수정해서 올려봅니다. 핵심은 signal - slot 구조가 되겠네요. # https://opentutorials.org/module/544/9494 import sys from PyQt5 import QtWidgets from PyQt5 import QtGui from PyQt5 import uic from PyQt5 import QtCore from PyQt5.QtCore import pyqtSlot class Form(QtWidgets.QDialog): def ...

[TIL] PyQT5 on Linux

PyQT5 강좌 : https://opentutorials.org/module/544 PyQT5 리눅스 설치 방법 : https://gist.github.com/ujjwal96/1dcd57542bdaf3c9d1b0dd526ccd44ff ubuntu 16.04 계열 설치방법입니다. $ sudo apt install python3-pyqt5 $ sudo apt install pyqt5-dev-tools $ sudo apt install qttools5-dev-tools # 디자이너 실행 $ qtchooser -run-tool=designer -qt=5 혹은 $ /usr/lib/x86_64-linux-gnu/qt5/bin/designer

[TIL] Raspberry PI에서 Analog audio output 복구하기

갑자기 Analog audio output이 안됩니다. 이래저래 만지다보니 안되는것 같네요. 복구해야죠 뭐.. 구글링! Configure and Test the Audio 구글신은 위대하네요! 먼저 테스트해봅니다. $ speaker-test -t wav speaker-test 1.0.28 Playback device is default Stream parameters are 48000Hz, S16_LE, 1 channels WAV file(s) Rate set to 48000Hz (requested 48000Hz) Buffer size range from 512 to 65536 Period size range from 512 to 65536 Using max buffer size 65536 Periods = 4 was set period_size = 16384 was set buffer_size = 65536 0 - Front Left Time per period = 0.379416 0 - Front Left Time per period = 1.361861 0 - Front Left Time per period = 1.369982 안나오네요. 읽다보니 이게 땡깁니다. sudo raspi-config 후 Advanced options > Audio 으로 가서 선택해보랍니다. 1 Force 3.5mm ('headphone') jack 를 선택후 다시 위의 테스트를 해봤습니다. 오...여자 목소리로 Front Left를 외치는군요! 굿! 다시 구글 어시스턴트를 돌려봤더니 잘됩니다.

[TIL] 라즈베리파이 3에서 구글 어시스턴트를 이용해보자 #3

이미지
드디어 알리에서 마이크가 도착했습니다! ......는 사실 받은지 한달이 다 되가네요 하하... 게으름에 쳐박아두었다가 아들의 충격적인 이야기에 꺼낼수 밖에 없었습니다. 아빠가 인공지능 스피커 만들어준다고 친구들한테 다 이야기했는데 언제 만들어주세요? 으아악!!! 거짓말하는 아빠가 될수없으니 무조건 만들어야합니다. 대충 만들어서 몇번 해주고 말려고 했는데 이젠 이쁘게 만들기까지 해야겠네요. 친구들한테 자랑하려고 할테니까요! 망했습니다..... 어쨌든 스피커는 블루투스 연결이 귀찮아서 그냥 유선으로 연결했습니다. 블루투스 스피커를 구매할때 AUX를 지원하는지 확인 후 구매했던게 유효하네요.(으쓱) USB 마이크를 연결했더니 dmesg에 다음과 같이 뜹니다. [ 249.714228] usb 1-1.3: new full-speed USB device number 4 using dwc_otg [ 249.850953] usb 1-1.3: New USB device found, idVendor=0d8c, idProduct=013c [ 249.850967] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 249.850975] usb 1-1.3: Product: USB PnP Sound Device [ 249.850983] usb 1-1.3: Manufacturer: C-Media Electronics Inc. [ 249.856982] input: C-Media Electronics Inc. USB PnP Sound Device as /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.3/1-1.3:1.2/0003:0D8C:013C.0001/input/input0 [ 249.924603] hid-generic 0003:0D8C:013C.0001: input,hidraw0: USB HID v1.00 ...

[TIL] codewars 사이트 소개 및 시작!

영어공부한다고 코딩 공부를 좀 미뤄뒀는데 우연찮게 소개받은 사이트를 발견하고 코딩 공부를 다시 시작하게 되었습니다. 수많은 코딩 인터뷰 사이트를 다녀봤는데 지루하고 금방 질리는 면이 있어서 지속하기 어려웠습니다. 그런데 이 사이트는 codewars라는 이름에 걸맞게 게임같은 화면과 여러가지 재미있는 요소를 넣어서 코딩 공부를 할 수 있도록 해놓아서 시작해보았습니다. 게다가 웹에서 vi를 쓸수 있군요! 추천합니다! kata 라는게 있는데 튜토리얼모드인건지 문제가 계속 이어지네요. 풀어보고 있습니다! https://www.codewars.com/ 오늘 푼 문제 (대략 이해한대로 의역하자면) 한 층에 큐브를 n^3개를 쌓고 그 다음 층은 (n-1)^3 개를 쌓게 됩니다. 그렇게 하여 가장 높은 층은 1^3 개의 큐브가 쌓이게 됩니다. 큐브가 주어졌을때 한개도 남기지 않고 큐브를 쌓을 수 있으면 층수를 리턴하고 큐브가 남을 경우 -1을 리턴하시오. 이런 문제가 나왔을때 수학공식이 바로 떠오르지 않는다면 일단 무식한 방법으로 풀고 개선하는게 가장 좋더군요. long long findNb(long long m) { long long sum = 0; long long i = 1; for (long long i = 1; sum < m; i++) { sum += i*i*i; if (m == sum) { return i; } if (sum > m) { break; } } return -1; } 아 정말 너무 무식하네요. 여러가지 아이디어가 떠오르긴 했습니다만 세제곱인 관계로 그렇게 부하가 크지 않을것 같아서 submit 해버렸습니다.

이 블로그의 인기 게시물

구글 시트에 여러 행 한번에 추가하기

WSL2 Ubuntu 20.04 및 네트워크 설정

리눅스 멀티코어를 사용하는 tar 압축/해제