Python (18) 썸네일형 리스트형 PySide6 에서 윈도우 종료시 다시 한번 확인하기 가끔 윈도우 프로그램에서 상단의 종료버튼을 누르면, 그때 한번 더 확인할 필요가 있을 때가 있다. 이게 알면 간단한데, 모르면 어떻게 구현해야 하나? 하는 막막한 기능이다. 그러니, 먼저 챗지피티에게 종료여부 확인 기능에 대해서 물어보자. 그랬더니 아래와 같은 코드를 알려준다. import sysfrom PySide6.QtWidgets import QApplication, QMainWindow, QMessageBoxclass MainWindow(QMainWindow): def closeEvent(self, event): reply = QMessageBox.question(self, "종료 확인", "정말로 종료하시겠습니까?", .. 색깔 변경하며 그래프 그리기 (PySide6, PyQtGraph) 그래프를 그릴 때 색깔을 변경하며 그래프를 그려야 할 때가 있다. 이때 한 두개라면 직접 색깔을 지정해주겠지만, 100개 정도 된다면? 자동으로 순처적으로 색깔을 변경해가면서 그려주면 좋겠다는 생각을 하게 된다. 한번 해보자. 아, 왜 PySide6 인가? PyQT도 아니고... 이건 라이센스 때문이다. PySide6가 라이센스에서 더 프리하기 때문이다. PyQT와 PySide 와의 차이는 아래 분이 더 설명을 잘 해주셨다. https://dev-overload.tistory.com/44 [Python] PyQt와 PySide에 대한 잡설*본 포스팅에서는 PyQT나 PySide의 사용 방법에 대한 설명을 포함하지 않습니다. PyQT와 PySide 필자는 본 블로그에 따로 포스팅하지는 않지만 종종 취미 .. 평면에서 일정 영역 진입/진출 확인하기 2D 평면 상에서 일정 영역에 진입/진출 시점을 확인해보자. 예를 들어, 어떤 도시가 있고 그 도시 내의 도로를 자동차들이 지나간다고 하자. 자동차들의 위치는 GPS 등을 통해 매 1초마다 알 수 있다고 하자. 이런 상황에서 도시 내의 어떤 지역에 자동차가 들어온 시간과 나간 시간을 알고 싶다고 하자. 이것을 어떻게 구할 수 있을까? 흠.. 일정 영역에 진입했다, 진출했다를 계산하기가 생각보다 간단하지가 않다. 그러면 쳇지피티에게 일단 물어보자. 쳇지피티가 알려준 코드는 아래와 같다. import numpy as npimport matplotlib.pyplot as pltdef generate_path(steps=100, bounds=(-10, 10)): """ 이동 객체의 경로를 생성 """ .. Protobuf 를 쉽게 사용해보자 (2/2) 앞에서 protobuf 환경을 설치했다. 간략히 말하면 protobuf 개발 환경은 library와 compiler로 구성된다. protobuf library는 pip install protobuf 로 설치했고, 이때 library 버전을 확인하였다. protobuf compiler는 아래 공식 사이트에서 다운 받는데, library 버전과 같은 버전을 다운 받았다. https://github.com/protocolbuffers/protobuf/releases Releases · protocolbuffers/protobufProtocol Buffers - Google's data interchange format - protocolbuffers/protobufgithub.com 오늘은 실제로 활용을 해보.. Protobuf 를 쉽게 사용해보자 (1/2) 일단 protocol buffer 가 뭔지 쳇지피티에게 물어보자. 흠. Protocol Buffer 는 구글에서 만든 serialization 포맷 및 데이터 교환 프로토콜로서 언어 독립적이라고 한다. 그리고 구조화된 데이터를 정의해서 코드를 자동으로 생성해준다고 하는데... 이렇게 보면 잘 모르겠다. 그냥 한번 직접 사용해보자. 일단 Protobuf 를 사용하려면 크게 2가지가 필요하다. Protobuf Compiler와 Protobuf Library 이다. Protobuf Compiler는 .proto 파일을 읽어서 코드를 만들어주는 역할을 하고, Protobuf Library는 실제 프로그램에서 protobuf 를 사용할 수 있게 해준다. 그럼 Protobuf Compiler 부터 설치해보자... 파이썬 리스트 깊은 복사(deep copy) vs 얕은 복사(shallow copy) --------결론부터 말하면... 리스트 복사시에- 리스트 내부에 중첩리스트가 있으면, 깊은 복사를 써야 완전히 분리되어 복사가 가능하다. - 중첩리스트가 없으면 얕은 복사를 쓰는 것이 훨씬 성능이 빠르다. 끝. --------- 파이썬에서 리스트의 일부분을 복사해보자. 리스트를 복사할 때는 깊은 복사(deep copy)가 좋다고 들었는데, 한번 깊은 복사를 해보자. 먼저 쳇지피티에게 물어보자. 아래와 같은 코드를 보여주었다. import copyimport random# 초기 리스트 A (20개의 0으로 초기화)A = [0] * 20# 랜덤 값으로 채워진 리스트 B (길이 10)B = [random.randint(1, 100) for _ in range(10)]# 깊은 복사 수행A[:len(B).. 파이썬 리스트 복사(list copy) 파이썬 리스트에 부분 복사(copy)를 해보자. 다음 상황을 가정해보자. 두개의 list가 있다. list_A 에는 0부터 9까지 총 10개의 요소가 있고, list_B에는 10부터 19까지 역시 10개의 요소가 있다고 하자. 이때 list_A의 값을 list_B의 값으로 변경하고 싶다고 할 때, 보통은 대입연산자 '='를 써서 처리한다. 그럼 아래 터미널에서 실제 동작하는 것을 확인해보자.list_A와 list_B를 생성하고, 주소값을 확인해보니 아래와 같았다. id(list_A): 4318977152id(list_B): 4318977664즉, list_A와 list_B는 서로 다른 주소를 가지고 있는 상태였다. 이때 list_A를 list_B의 값으로 복사하고 싶어서, 대입연산자('=')를 사.. 간단한 설정파일을 직접 만들어서 사용해보자 프로그램을 만들다보면 설정파일이 있으면 편하겠다는 생각을 종종 한다. 예를 들어, 서버IP를 코드에 직접 넣는 것은 왠지... 이건 아닌데.. 라는 생각이 들 때라던가, 사용자 이름 또는 각종 실험적인 기능의 on/off 를 매번 코드에서 조절하기 힘들기도 하고, 실행시 파라미터로 받는 것도 귀찮을 때가 있다. 그럴때는 간단히 나만의 설정파일을 만들어놓고, 그 설정파일을 읽어서 처리하면 종종 쉽게 처리된다. 그런데 설정파일을 간단히 작성한다고 해도, 각 설정마다 comment도 넣어서 알기 쉽게 만들고 싶기도 하다.그러다가 점점 일이 커지면... 그냥 코드에 적어 넣게 된다. 죄 짓는 느낌과 함께... 먼저 아래처럼 간단한 설정파일을 만들었다. key = value 의 형태를 가지고 있고, # 이 나오면.. 이전 1 2 3 다음