• Programming,  Python

    [Python] PyQt – Layout

    GUI를 만들고 싶을 때 가장 먼저 생각나는 부분이 layout이다. Layout 종류는 다양하지만 대표적인 것 몇가지를 소개한다. Layout Alignment Layout widget을 만들어서 main widget에 등록하고, layout에 각 컴포넌트인 label을 하나씩 추가한다. 여기서 layout option으로…

  • Programming,  Python

    [Python] PyQt Widget

    Python Qt에선 위젯이라는 것을 사용하는데 위젯 설정을 통해 배경색, 투명도 등 다양한 부분을 수정 할 수 있다. 위 코드에서 Form은 main Widget을 두고 3개의 sub Widget을 생성한다. self는 main Widget을 말한다. QGraphicsOpacityEffect([위젯 객체])…

  • Programming,  Python

    [Python] PyQt

    Python에서 GUI를 지원하기 위해 가장 많이 사용하는 library는 PyQt다. 결과는 위와 같이 단순한 창 하나가 나온다. QWidget의 속성 얻기 Widget이라고 하면 하나의 창을 말하는 것 같은데, 해당 속성들을 쉽게 얻는 코드가 아래에 있다.…

  • Programming,  Python

    [Python] Multi-Thread Queue Polling

    여러개의 thread 중 하나의 thread가 처리하게끔 만드는것을 polling이라고 한다. Linux의 경우엔 select()라는 함수가 존재하는데, 이를 Python에서 구현하면 다음과 같다. Got: 1 Got: 10 Got: hello Got: 15 운영체제 시스템에선 유저와 커널이 서로 데이터를…

  • Programming,  Python

    [Python] SSLError

    Python에서 외부 호스트에 request를 날릴 때 다음과 같은 error가 발생한다. 위를 해결하기 위해서 다음과 같은 코드를 추가하면 해결 가능하다. os.environ['HTTP_PROXY'] = os.environ['http_proxy'] = "[Proxy Server IP]"

  • Programming,  Python

    [Python] Property Extension

    deleter 지난번에 Python에서 접근 지정을 위해 property class를 사용한다고 배웠다. Property 기능은 크게 세 가지가 존재하는데, getter, setter, deleter가 존재한다. deleter는 property를 삭제할 때 호출되는 함수다. (del을 통해) Subclass에서 Property Setting name to…

  • Programming,  Python

    [Python] 다중 상속, MRO

    Python에선 다중으로 상속이 가능하다. 그래서 대표적인 상속 예시가 다이아몬드 상속이다. Base.__init__ A.__init__ Base.__init__ B.__init__ C.__init__ 위 코드는 Base라는 최상위 class가 두 번 호출된다. C++의 경우엔 virtual이라는 것을 통해 하나라는 것을 알 수 있지만…

  • Programming,  Python

    [Python] Proxy Design Pattern

    42 A.spam None Should be 37: 37 Should be 37: 37 위 코드는 객체 a를 Proxy()에 넣으면 객체 p에 접근하면 마치 a에 접근하는 것처럼 하는 proxy design pattern 이다. 위 코드에서 print(p.x) 가…

  • Programming,  Python

    [Python] Override

    Class에서 부모 class와 자식 class의 function 이름이 같을 경우 자식 class’s function을 call 할 때 부모 class function이 가려지고 자식 class function이 호출된다. B.spam A.spam Constructor 또한 일반 함수처럼 override 된다. B.__init__() 1…