수색…


비고

wxPython이란 무엇입니까?

간단히 말하면 wxPython은 wxWidgets C ++ 크로스 플랫폼 GUI 라이브러리에 대한 바인딩 세트입니다.

좋아, wxWidgets이란 무엇인가?

wxWidgets 라이브러리는 다양한 GUI 요소에 대한 무료, 무상 & 오픈 소스, 추상화 세트를 제공하여 사용 가능한 경우 네이티브 컨트롤을 계속 사용하여 기본 모양, 느낌 및 속도를 유지합니다. 따라서 GUI 작성 및 개발자가 단일 코드 기반을 사용하여 Windows, Mac OS X, Linux 및 기타 플랫폼 용 응용 프로그램을 만들 수있는 플랫폼의 여러 유틸리티에 대한 추상화를 제공합니다. wxWidgets는 1992 년에 시작되었으며 여기 에서 자세한 내역을 볼 수 있습니다 . wxWidgets 라이브러리는 wxWindows 라이센스하에 배포되며, Lx -GPL을 기반으로 하지만 예외 조항이 있습니다. 예외 절을 사용하면 동적으로 또는 정적으로 wxWidgets에 응용 프로그램을 연결하여 자신의 응용 프로그램에 대한 소스를 배포 할 필요가 없습니다 . 즉, 당신은 무료로, 무료 또는 상업적 프로젝트 중 하나에 대한 wxWidgets에 사용할 수 있습니다. 라이센스는 wxWidgets 라이브러리 자체에 향상된 기능을 제공 할 것을 권장합니다.

하이라이트 는 wxWidgets가 크로스 플랫폼 애플리케이션 개발을위한 100 가지 클래스로 구성된다는 점에 유의하십시오 .

  • Sizer를 사용한 창 레이아웃
  • 장치 컨텍스트 (펜, 브러쉬 및 글꼴과 함께)
  • 포괄적 인 이벤트 처리 시스템
  • HTML 도움말 뷰어
  • 사운드 및 비디오 재생
  • 유니 코드 및 국제화 지원
  • 문서 /보기 아키텍처
  • Archiecture 인쇄하기
  • 소켓
  • 멀티 스레딩
  • 파일 및 디렉토리 조작
  • 온라인 및 상황 별 도움말
  • HTML 렌더링
  • 기본 컨테이너
  • 이미지로드, 저장, 그리기 및 조작
  • 날짜 - 시간 라이브러리 및 타이머
  • 오류 처리
  • 클립 보드 및 드래그 앤 드롭

스레딩 과 같은 이러한 기능 중 일부는 실제로 GUI와 관련이 없지만 유용한 크로스 플랫폼 추상화를 제공하므로 예를 들어 스레딩의 경우 한 세트의 응용 프로그램 코드가 지원되는 모든 플랫폼에서 작동합니다.

수년 동안 wxWidgets 라이브러리는 ASCII 코드와 유니 코드 모두를 위해 빌드 된 정적 및 동적 라이브러리의 소스 코드 집합에서 디버그 빌드 외에도 4 개의 별도 빌드를 생성했습니다. 일반적으로 가장 일반적인 변형으로 미리 빌드 되어 있으며 타겟 환경에 대한 다양한 옵션 과 지원되는 수많은 툴 체인이있는 개발자 C ++ 툴 체인으로 빌드하기위한 소스 코드로 사용할 수 있습니다 .

이 라이브러리를위한 파이썬 바인딩과 몇몇 추가는 wxPython을 형성합니다.

wxPython이란 무엇입니까? (나에게 무엇을 제공합니까?)

wxPython은 명확한 라이센스와 함께 크로스 플랫폼 GUI 라이브러리의 이점을 제공하는 동시에 Python의 이점을 제공합니다. wxWidgets 및 Python과 마찬가지로 wxPython은 무료이며 무상 & 오픈 소스이며, 결과적으로 소스 코드를 배포 할 필요없이 무료 및 상업용 프로젝트에서 사용 및 배포 할 수 있습니다 .

  • 전체 GUI Suite 포함 (이에 국한되지 않음) :
    • Windows (MDI Windows 포함)
    • 마법사
    • 프레임 및 MiniFrames
    • 대화, 표준, 고급 및 맞춤
    • 책, 나무, 그리드 및 데이터보기 컨트롤
    • 게이지, 슬라이더, 스피너, 애니메이션, 클립 보드, 드래그 앤 드롭
    • HTML, PDF 및 이미지 뷰어 지원
    • GUI 구성 요소는 절대적으로 배치 될 수 있지만 자동 크기 조정 등을 지원하는 sizer 기반 레이아웃을 사용하는 것이 좋습니다.
  • 크로스 플랫폼 - 코드에 조건문없이 단일 코드베이스로 Windows, OS-X 및 Linux 용 GUI 지원
  • 기본 속도, 모양 및 느낌.
  • 신속한 프로토 타입, 테스트 및 디버그 - 이것이 파이썬임을 기억하십시오.
  • 데모 패키지의 모든 샘플을 실행하고 편집하십시오.
  • 상용 제품에서도 무상 사용을위한 라이센스를 취소하십시오.
  • 필요한 경우 이미 파이썬 GUI를 사용하고 있으므로 나중에 파이썬 GUI를 C ++ wxWidgets GUI로 리팩토링 할 수 있습니다.
  • StackOverflow메일 링리스트 에있는 대규모의 적극적이고 유용한 사용자 및 개발자 커뮤니티

파이썬 자체가 wxWidgets의 유틸리티 함수를 구현하기위한 크로스 플랫폼 메커니즘을 제공하는 곳에서 다시 스레딩하는 것이 좋은 예 이며 wxPython에서 의도적으로 생략되었습니다.

wxPython에는 문서 및 데모 패키지 내에서 실행, 테스트 및 편집 할 수있는 매우 큰 데모 세트도 있습니다.

wxPython의 맛

ASCII 대 유니 코드 :

수년 동안 wxWidgets와 마찬가지로 개발자는 ASCII 및 Unicode 빌드 중에서 선택해야했으며 특정 버전의 Python 및 32/64 비트 옵션에 대한 빌드가 필요했습니다. wxPython 2.8.9에서 wxPython의 ASCII 전용 빌드가 삭제되어 유니 코드 지원이 항상 사용 가능해졌습니다.

클래식 대 피닉스 :

wxPython 3.0.0 이후 wxPython과 피닉스 현재 출시되지 않은 빌드의 "Classic"빌드가 출시되었습니다 . 클래식 빌드는 동일한 번호의 wxWidgets 빌드보다 뒤쳐지는 경향이 있으며 문서 패키지는 C ++입니다. Windows의 경우 실행 가능한 설치 프로그램 인 경우 다양한 플랫폼 ( 클래식 설치 참조)에서 다운로드 할 수 있습니다. 대부분 자동으로 생성되는 Phoenix 바인딩은 wxWidgets 빌드를보다 자세히 따라야하며 wxPython 전용 문서도 포함해야합니다. pip 를 사용하여 을 얻을 수 있으므로 원본 또는 야간 빌드에서 빌드 할 수 있습니다 ( Phoenix 설치 참조).

wxPython에서는 있지만 wxWidgets에서는 그렇지 않습니다.

wxPython은 여러 기능을 가진 wxWidgets 라이브러리를 확장합니다 . 다음은 wxWidgets에서 사용할 수없는 몇 가지 기능입니다.

Win10의 데모 스크린 샷

모든 분기가 닫힌 wxPython 데모 : 여기에 이미지 설명을 입력하십시오. 최근 추가 된 기능 중 하나 : 여기에 이미지 설명을 입력하십시오. AGW 중 하나 (고급 일반 위젯) : 여기에 이미지 설명을 입력하십시오.

wxPython Phoenix 설치

wxPython PhoenixwxPython 의 최신 버전입니다 (현재 공식 릴리즈가없는 2016 년 9 월 ). 파이썬이 파이썬 3 모두 당신은 당신의 플랫폼과 파이썬 버전 (즉, 파이썬 휠) 스냅 샷 빌드를 다운로드 할 수 있습니다 지원 여기 .

wxPython Phoenix는 wxWidgets 라이브러리와 문서를위한 파이썬 바인딩을 생성하는 대부분 자동화 된 메커니즘을 사용합니다. Phoenix wxPython 문서Sphinx를 사용하여 자체적으로 생성됩니다. 이것은 wxPython에서 사용할 수없는 많은 오버로드를 포함하는 고전적인 빌드의 C ++ 문서와는 달리 명확성을 높입니다.

wxPython Phoenix를 설치하기 전에 Pythonpip 를 설치해야합니다.

pip를 사용하여 wxPython의 Phoenix 버전을 설치할 수 있습니다. 현재 권장되는 방법은 다음과 같습니다.

python -m pip install --no-index --find-links=http://wxpython.org/Phoenix/snapshot-builds/ --trusted-host wxpython.org wxPython_Phoenix

이 명령을 사용하면 pip는 wxWidgets 도 설치합니다. Phoenix가 공식적으로 출시되면이 복잡한 pip 명령은 'pip install wxpython'이 될 것입니다.

참고 : wxPython Phoenix는 현재 베타 버전이며 Classic 버전의 모든 위젯을 가지고 있지 않습니다.

wxPython Classic 설치

wxPython Classic은 wxPython 라이브러리의 Python 2 빌드입니다. 파이썬 바인딩 생성은 많은 수의 수동 개입이 필요하며 문서는 wxWidgets의 새로운 릴리스와 wxPython의 일치 릴리스 사이에 일반적으로 몇 주에서 몇 달의 지연이 있기 때문에 wxPython 메커니즘에 대한 일부 주석을 포함하는 wxWidgets 문서입니다 .

wxPython 웹 사이트의 다운로드 페이지로 이동하여 해당 플랫폼 용으로 다운로드 할 수있는 wxPython 버전이 있는지 확인하십시오.

Classic의 최신 버전은 3.0.2.0입니다.

Windows

웹 사이트에는 32 비트 및 64 비트 Windows 플랫폼 용 Python 2.6 및 2.7 설치 관리자가 있습니다. 이 중 하나를 다운로드하고 설치하여 설치하십시오.

참고 : 설치 한 올바른 Python 용 wxPython 설치 프로그램을 다운로드해야합니다. 예를 들어 파이썬 2.7 32 비트가 있다면 wxPython 32 비트 설치 프로그램이 필요합니다.

OSX 10.5 이상인 경우 wxPython의 Cocoa 버전을 다운로드하여 설치해야합니다. 코코아 버전은 또한 64 비트 Mac을 지원합니다.

OSX 버전이 10.5 미만인 Mac을 사용한다면 Carbon 빌드가 필요할 것입니다.

리눅스

Linux 플랫폼의 패키지 관리자 (예 : yum, apt-get 등)가 설치 가능한 wxPython 버전이 있는지 확인하는 첫 번째 방법. 불행히도, wxPython을위한 많은 리눅스 패키지는 3.0.2.0 대신에 2.8.12.1 버전을 사용합니다. 패키지 관리자에 최신 버전이없는 경우 직접 패키지를 빌드해야합니다.

3.0.2.0-Classic의 빌드 지침이 있습니다.

안녕하세요 세계

Hello World 프로그램을 만드는 간단한 방법은 다음과 같습니다.

import wx
app = wx.App(redirect=False)
frame = wx.Frame(parent=None, id=wx.ID_ANY, title='Hello World')
frame.Show()
app.MainLoop()

산출:

Hello World 출력

보다 일반적인 예는 wx.Frame 을 서브 클래스 화하는 것입니다 :

import wx

class MyFrame(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, title='Hello World')
        self.Show()

if __name__ == '__main__':
    app = wx.App(redirect=False)
    frame = MyFrame()
    app.MainLoop()

파이썬의 super 를 사용하기 위해 다시 작성할 수도 있습니다 :

import wx  

class MyFrame(wx.Frame):
        
    def __init__(self, *args, **kwargs):
        """Constructor"""
        super(MyFrame, self).__init__(*args, **kwargs)
        self.Show()

if __name__ == '__main__':
    app = wx.App(False)
    frame = MyFrame(None, title='Hello World')
    app.MainLoop()

wxPython 릴리스 시리즈 란 무엇입니까?

wxWidgets 프로젝트는 리눅스 커널 프로젝트에서 사용되는 릴리즈 모델을 채택했다.이 릴리즈 모델에서는 한 세트가 "안정적인"것으로 간주되고 다음 세트는 "개발"로 간주되는 번갈아 출시되는 세트가있다. wxWidgets의 경우 "stable"및 "development"는 버그가 아니라 API의 안정성과 하위 호환성을 의미합니다.

  • 안정 : 일련의 지속 기간 동안 새로운 비 가상 클래스 메소드 등을 추가 할 수 있지만 기존 API는 수정되지 않습니다. C ++ libs의 이진 호환성은 클래스 및 구조체의 메모리 크기 또는 레이아웃을 수정하는 변경을 허용하지 않음으로써 유지됩니다. 이것은 안정 버전의 시리즈에서 어떤 종류의 향상이나 버그 수정을 할 수 있는지에 대한 제한을 부과 할 수 있습니다. 그러나 파이썬에서 이전 버전과의 호환성은 약간 다른 의미가 있기 때문에 이것은 C ++ 레이어에만 영향을 미칩니다.

  • 개발 : 릴리스 시리즈의 주요 목적은 새로운 안정적인 시리즈에서 다음 버전의 안정적인 시리즈를 만들기 위해 이진 호환성 문제로 인해 수정할 수없는 문제를 해결하거나 새로운 기능을 추가하는 것입니다. 따라서 개발 시리즈가 지속되는 동안 필요에 따라 API를 수정하거나 제거 할 수 있지만 대부분의 경우 C ++ 소스 레벨 호환성은 비추천 된 오버로드 된 함수 나 매크로 등을 통해 유지됩니다. wxPython의 경우 이는 종종 오버로드 또는 매크로가 없기 때문에 소스 수준의 비 호환성이 있어야하며 API의 새 버전을 지원하기 위해 이전 버전을 제거해야하는 경우가 있습니다.

바이너리 호환성 문제로 인해 wxWidgets / wxPython의 최신 개발 버전은 마지막 안정 버전의 최신 버전보다 버그가 적을 수 있습니다. 그러나 개발 시리즈의 버전 간에는 API가 변경되거나 진화 할 수 있다는 절충안이 있습니다.

버전 번호는 어떻게 작동합니까?

wxPython은 4 개의 구성 요소 버전 번호를 사용합니다. 이 버전 번호가 다른 오픈 소스 프로젝트에서 사용되는 방법과 비슷하게 보이지만 몇 가지 미묘한 차이가 있습니다. 따라서 일부 ABCD 릴리스의 경우 다음을 추론 할 수 있습니다.

  1. 릴리스 시리즈 : 버전 번호 ( AB )의 처음 두 구성 요소는 릴리스 계열을 나타내며 B 구성 요소가 짝수이면 안정적인 계열이며, 홀수 인 경우 개발 릴리스 시리즈입니다. 예를 들어 2.4, 2.6 및 2.8은 안정적이며 API는 각 시리즈 내에서 거의 동결되어 있으며 2.3, 2.5 및 2.7은 개발이며 API 및 기능은 필요에 따라 변경 또는 발전 할 수 있습니다.

이 때문에 하나의 안정된 시리즈와 다음 시리즈 (2.4에서 2.6 사이) 사이에 상당히 큰 변화가있을 수 있으며, 이는 다른 프로젝트에서 해당 가상의 변경으로 인해 버전 번호의 첫 번째 구성 요소가 변경 될 수 있기 때문에 사람들을 버리게합니다. 대신 AB 의 버전을 주요 버전으로 생각하는 것이 좋습니다.

  1. 릴리스 번호 : 버전 번호 (C)의 세 번째 구성 요소는 릴리스 계열의 릴리스 중 하나를 나타냅니다. 예를 들어, 2.5.0, 2.5.1, 2.5.2, 2.5.3 ...은 모두 2.5 릴리스 시리즈의 모든 릴리스입니다. (이 경우에는 개발 시리즈이기 때문에 2.5.3의 API와 기능은 2.5.0보다 다른 곳으로 진화했습니다.) C ++ wxWidgets 릴리즈는 대개 여기에서 멈추고 ABC 릴리즈 만 생성됩니다.

  2. 서브 버전 번호 또는 wxPython 릴리스 : 버전 번호 (D)의 네 번째 구성 요소는 서브 릴리스 또는 공식 wxWidgets 릴리스 간의 증분 릴리스를 나타내는 데 사용됩니다. 이 릴리스에는 wxPython이 노출했을 수있는 wxWidgets 버그에 대한 수정 사항이나 wxPython에서 중요한 작은 개선 사항이 포함되어 있습니다. 이것은 임의의 wxWidgets 스냅 샷이 아니라, 소스 코드 저장소를 제외한 wxWidgets에서 아직 사용할 수없는 수정 사항 및 향상된 기능을 갖춘 테스트 된 버전의 코드입니다.

출처 : https://wiki.wxpython.org/ReleaseSeries



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow