반응형

파이썬에서 GUI 프로그램을 만들기 위해서 필요한 GUI 도구들을 알아본다.


1. Tkinter

Tkinter는 Tcl/Tk에 대한 파이썬 Wrapper로서 Tcl/Tk를 파이썬에 사용할 수 있도록 한 Lightweight GUI 모듈이다. Tcl은 Tool Command Language의 약자로서 일종의 프로그래밍 언어이며, Tk는 크로스 플랫폼에 사용되는 일종의 GUI 툴킷이다. Tkinter는 타 GUI 프레임워크나 툴킷에 비해 지원되는 위젯들이 부족하고 UI도 그렇게 예쁘지 않다는 단점이 있지만, Python 설치시 기본적으로 내장되어 있는 파이썬 표준 라이브러리이기 때문에 쉽고 간단한 GUI 프로그램을 만들 때 활용될 수 있다.

Tkinter는 파이썬에 기본 내장되어 있기 때문에 별도로 설치할 필요가 없다. Tkinter를 사용하기 위해서는 tkinter 모듈을 import 하면 된다.


2. PyQt

PyQt는 Qt의 Python Language Binding 중의 하나이다. Qt는 C++로 작성된 크로스 플랫폼 프레임워크로 The Qt Company에서 작성한 프로그램이다. PyQt를 사용하면, 동일한 파이썬코드를 사용하여 윈도우즈, Mac, 리눅스에서 모두 동작하는 GUI 프로그램을 작성할 수 있다. PyQt4와 PyQt5가 있으며, PyQt4는 더이상 지원되지 않는다고 한다.

GtDesigner 라는 강력한 UI 디자인 도구를 제공하는 장점이 있다. PyQt는 오픈소스로서 개인용으로는 무료이지만 상업용으로는 License를 구입해야 한다. 


3. PySide

PyQt4와 유사한 Python Qt 바인딩이며, 크로스 플랫폼을 지원한다. 

PyQt4와 거의 비슷한 PySide는 오픈소스로서 상업용으로도 무료이다. 하지만, PySide는 오픈소스를 지속적으로 관리하는 부분이 소홀한 만큼 상업용 프로젝트에는 부담스러울 수 있다. LGPL을 따른다. 

 

4. PyGTK

리눅스 환경에 잘 맞으며, 윈도우즈에서는 돌리기에 좀 불편한 편이다. GUI 디자인 도구로 Glade를 제공한다. Tkinter에 비해서는 기능이 많은 편이며, LGPL 라이센스 정책을 따른다.


5. wxPython

크로스-플랫폼을 지원하과 각 플랫폼에 어울리는 위젯을 제공한다. Tkinter에 비해 기능이 충실한 편이다. wxGlade와 같은 것 등의 GUI 디자인 도구를 제공한다. 

GPL과 유사한 Wxwidgets 라이선스 정책을 따른다.


6. Kivy

Kivy는 Windows, MacOSX, Linux, Android iOS 및 Raspberry Pi와 같은 여러 플랫폼을 지원한다. 오픈 소스이며 툴킷에는 20 개 이상의 위젯이 제공됩니다. 네이티브 위젯이 아닌 OpenGL ES 2를 통해 렌더링되므로 운영 체제 전반에 걸쳐 모양이 균일하다. Kivy를 사용하여 Android 및 iOS 용 멀티 터치 모바일 앱을 제작할 수도 있다고 한다. 게임을 만들때 좋은 GUI 라이브러리이다. MIT 라이선스 하에서 무료로 사용할 수 있다. Kv lang 이라는 별도의 개발언어로 보다 간략하게 화면을 개발할 수 있다. 이 개발언어를 보다 편리하게 사용할 수 있도록 designer가 제공된다.


반응형
반응형

파이썬은 엄청나게 많은 패키지를 제공한다. 파이썬을 설치하면 기본적으로 함께 설치되는 패키지도 있지만, 좀더 고급 기능이 필요하거나, 기본에서 제공하지 않는 다양한 패키지를 손쉽게 설치하는 방법을 제공한다.

패키지를 설치하는 첫 번째 방법은 pip 명령어로 설치하는 것이다. 쉽고 일반적인 방법이다.

> pip install <pi 이름>

 또는 기본적인 파이썬 실행방법으로 해도 된다.

> python -m pip install <pi 이름>

 여기서 pi 이름은 전체 파이썬 패키지 중에서 구분하기 위한 명칭인데, 이것은 pypi.org 에서 확인할 수 있다. piPackage index를 의미한다. 이 명령을 실행하면, 설치하고 싶은 패키지와 그 패키지가 필요로 하는 추가적인 패키지들을 알아서 다운로드 받아 설치해 준다. 패키지들 간에 의존하는 버전들이 좀 복잡할 수 있는데, 이런 부분들을 자동으로 처리해 주기 때문에 편리하다.

네트워크 환경에 따라서, pip 명령어가 필요한 패키지를 자동으로 다운로드 받는 과정에서 SSL 관련 오류가 날 수 있다.

Could not fetch URL https://pypi.python.org/simple/pip/: There was a problem confirming the ssl certificate : [SSL CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)

이런 경우, <Python 설치경로>\Lib\site-packages\pip\_vendor\requests 에 있는 session.py을 수정해야 한다. session.py 파일에서 self.verify = True self.verify = False로 변경하여 저장하고 다시 pip install 명령을 실행하면 된다.

두 번째 방법은 파이썬 휠(Wheel)을 다운로드 받아서 직접 설치하는 것이다. 이 패키지들 간의 의존관계, 그리고 정확한 패키지 버전들을 모두 확인해서 직접 설치하는 방법이다. 특별한 이유가 없다면 추천하지 않는 방법이지만 알아둘 필요가 있다.

pypi.org

 

필요한 휠 파일을 다운로드 받기 위해서 pypi.org에 접속하여 패키지를 검색하면, 패키지의 설명과 다운로드를 제공한다.

pypi.org 검색결과
패키지 설명
패키지 다운로드

 다운로드 하기 위해서 제공되는 여러 개 파일 중에서 파이썬의 버전과 플랫폼(윈도우, 32비트 또는 64비트 등)을 확인하고 내려 받아야 한다. 예를 들어, 파이썬 3.7버전은 cp37, 윈도우는 win, 64비트는 amd64를 선택해서, wxPython-4.0.6-cp37-cp37m-win_amd64.whl 파일을 내려 받아야 한다. 내려 받은 휠 파일은 역시 pip install 명령어로 설치한다. 설치하는 패키지가 필요로 하는 추가적인 패키지가 이미 설치되어 있어야 한다. 그렇지 않다면 오류가 나도 필요로 하는 버전을 확인해서 먼저 설치해 주어야 한다.

> pip install wxPython-4.0.4-cp37-cp37m-win_amd64.whl

 

반응형
반응형

wxPython을 설치하기 위해서 간단히 pip install 명령을 실행하면 된다. wxPythonPython 2를 주로 지원하고

> pip install wxPython

[그림] wxPython 설치화면

만약, 파이썬 휠을 다운로드 받아서 설치한다면, 아래 순서대로 설치한다.

>pip install six-1.12.0-py2.py3-none-any.whl

>pip install Pillow-6.0.0-cp37-cp37m-win_amd64.whl

>pip install wxPython-4.0.4-cp37-cp37m-win_amd64.whl

 

 

반응형
반응형


Python3에서 PyQt5 설치 방법


> pip3 install pyqt5




Python3에서 Qt Designer 설치 방법


> pip3 install pyqt5-tools



Qt Designer 실행파일 위치


<Python 설치 디렉토리>\Lib\site-packages\pyqt5-tools\designer.exe




반응형
반응형

설치파일 다운로드 : https://www.python.org/downloads/


파이썬은 크게 버전 2와 버전 3가 있는데, 구분되어 관리되기 때문에 선택해서 설치해야 한다.

되도록 버전 3를 설치하기를 권장한다.


현재 (2019년 3월) 윈도우즈용 최신버전은 3.7.2 이다.

다운 받은 설치파일을 실행한다.


[Install Now]를 선택하면 바로 기본적인 설정으로 설치된다. 

사용하기 편리하게 하기 위해서 [Add Python 3.7 to PATH] 를 선택하기를 권장한다.


[Customize installation]을 선택한다면..

특별히 변경할 것이 없다면 [Next]를 클릭한다.


혼자만 사용하는 컴퓨터라고 하더라도, 여러가지로 편리하게 사용하기 위해서,

[Install for all users]를 선택하기를 권장한다.

이 옵션을 선택하게 되면, [Customize install location] 항목이 "C:\Program Files(x86)\Python37-32"로 설정된다.

명령프롬프트와 같은 환경에서 사용하기 편리하도록 "C:\Python37-32"와 같이 짧게 변경하기를 권장한다.

[Install]을 클릭하면 설치가 시작된다.

모든 설치가 완료되면 아래와 같은 화면이 뜬다.


설치가 완료되면 , 윈도우즈 시작 메뉴 중에서 Python 3.7 -> IDLE 를 실행하면, 파이썬을 간단하게 테스트해 볼 수 있는 화면이 실행된다.

이제 파이썬을 실행할 수 있는 기본적인 환경이 구성된 것이다.




 

반응형
반응형

# 이메일을 보내기 위한 smtplib 모듈을 import 한다


import smtplib



# 이메일에 이미지를 첨부하기 위한 모듈들을 import 한다


from email.mime.image import MIMEImage

from email.mime.multipart import MIMEMultipart


COMMASPACE = ', '



# 이메일 메세지 컨테이너를 만든다


msg = MIMEMultipart()

msg['Subject'] = 'Our family reunion'


# me == 보내는 사람의 주소


# family = 받는 사람들의 모든 주소


msg['From'] = me

msg['To'] = COMMASPACE.join(family) # join 함수로 받는 사람들의 주소를 합친다

msg.preamble = 'Our family reunion'



# 전송하고자 하는 이미지 파일들이 모두 PNG 파일이라고 가정하자


for file in pngfiles:

    # 바이너리 모드로 전송할 파일들을 연다.

    # MIMEImage 클래스가 자동으로 이미지의 타입을 알아낼 것이다.


    fp = open(file, 'rb')

    img = MIMEImage(fp.read())

    fp.close()

    msg.attach(img)




# 위와 같은 형태로 멀티파트에 MIME 부품을 추가하는 식으로 더 많은 정보를 넣을 수 있다

# MIMEText 등도 추가할 수 있다.



# 로컬 서버를 통해 메일을 보낸다.


s = smtplib.SMTP('localhost')

s.sendmail(me, family, msg.as_string())

s.quit()



# 로컬 SMTP 서버가 없을 경우 계정이 있는 다른 서버를 사용하면 된다.


s = smtplib.SMTP_SSL('smtp.gmail.com',465)

s.login("아이디", "비밀번호")

s.sendmail(me, you, msg.as_string())

s.quit()

반응형
반응형

import feedparser


urls = (

    "http://bomsoft.com/rss",

    "http://abc.com/rss"

)


def crawl_rss (url) :

    d = feedparser.parse(url)

    print( type(d))

    print( d.feed["title"] )

    for e in d.entries :

        print ("title = " + e.title)

        print ("link = " + e.link)

        print ("description = " + e.description)

        print ("pubDate = " + str(e.published) )


if __name__ == "__main__" :

    for url in urls:

        crawl_rss(url)



반응형
반응형

# shutil 모듈은 이미 파이썬 배포판에 포함돼 있으므로 직접 설치할 필요가 없습니다. 이 모듈을 사용하려면 모듈을 import하기만 하면 됩니다.

import shutil

#디렉토리 복사
shutil.copytree('Original', 'Original-Copy')

#Original의 모든 내용과 구조를 똑같이 가진 Original-Copy 디렉터리가 새로 생긴 것을 확인할 수 있습니다.

# 디렉토리 이동
shutil.move('Original', 'Original-Copy')

# 디렉토리 삭제
shutil.rmtree('Original-Copy')

반응형

+ Recent posts