2009-06-24 4 views
5

파이썬에는 tkinter, wxWidgets, pyGTK 등의 GUI 라이브러리가 많이 있습니다.하지만이 GUI는 모두 설치해야하고 중량이 많이 들어야하기 때문에 위에서 언급 한 GUI 라이브러리를 중계하는 최종 사용자 GUI Python 앱을 배포하기가 다소 복잡합니다.순수 파이썬 GUI 라이브러리?

최근 파이썬 내장 ctypes에 대해 생각해 보았습니다. 이론적으로 윈도우즈에서 ctypes (windll.user32.CreateWindowEx 등), MacOS에서는 원시 pyObjC, 그놈/kde에서는 pyGTK/pyQt를 사용할 순수 파이썬 GUI 라이브러리를 만들 수 있습니다. 그런 도서관이 존재합니까? 그렇지 않다면 생각이 잘못되었다고 어떻게 생각하십니까?

+1

Tkinter는 설치할 필요가 없으며 Python의 표준 배포판에 포함되어 있습니다. –

+0

창과 macos에서만. 그것은 우분투 등에 설치해야합니다. – grigoryvp

+0

"wx를 파이썬으로 재 작성하시오"와 같은 것을 의미합니까? 왜 이미 완성 된 것보다 더 좋을 것이라고 생각합니까? – nosklo

답변

10

최소한의 노력과 최상의 결과를 얻으려면 기존 GUI 라이브러리를 사용하여 앱을 배포하는 데 필요한 것이 무엇인지 알아야합니다.

+1

+1 : "꽤 헤비급"은 과장입니다. 대부분의 경우 GUI를 작성하려면이 모든 것이 필요합니다. –

2

나는 바퀴를 발명하지 않는다고 생각합니다. 그것은 효과가 있지만 왜 그렇게해야합니까? 당신이 언급 한 모든 GUI 라이브러리는 안정적이고 어느 정도는 총알이 없습니다.

순수 파이썬 라이브러리를 구현하는 몇 가지 실험이 있다고 상상할 수 있습니다. 그러나 나는 그것을 보지 못했다. GUI에 관한 모든 것은 힘든 일이며 순수한 파이썬 라이브러리는 그렇게 큰 청중을 갖지 않을 것입니다.

3

모든 라이브러리는 서로 다른 추상화를 사용하므로 모든 기능을 가진 모든 라이브러리는 최소 공통 분모 세트 인 또는을 사용하여 각각을 사용하는 많은 작업을 수행합니다. 최대한으로

4

"헤비급"이 무슨 뜻인지 잘 모르시겠습니까?

wx는 각 플랫폼에서 네이티브 컨트롤을 사용하며, 상상할 수있는 것처럼 파이썬에서 사용하기 쉽습니다. 결국 GUI가 복잡해지기 때문에 GUI API가 복잡합니다.

윈도우를 빌드하는 데 필요한 노력과 화면에 나타나는 품질이 훌륭하다고 생각합니다. 나는 네가 뭔가를 더 잘 굴릴 것이라고 생각하지 않는다.

8

Tkinter는 파이썬 표준 배포판의 일부이며 기본적으로 설치됩니다. 처음에는 그래픽 디스플레이가있는 모든 python 설치에서이 파일을 찾으십시오.

+1

+1. 더 많은 위젯이 필요하다면 가벼운 TKinter에 대한 몇 가지 추가 기능과 플러그인이 있으며 툴킷을 크게 개선 할 것입니다. 그러나 여전히 UI는 추한 것입니다. –

+6

"ui is 추한"의견은 주로 Tkinter의 이전 버전에만 적용됩니다. Modern Tk는이를 지원하는 플랫폼에서 네이티브 위젯을 사용합니다. 추악한 Tkinter 응용 프로그램은 요즘 툴킷 제한이 아닌 프로그래머의 재능을 반영합니다. 이 토론에 대한 자세한 내용은 http://stackoverflow.com/questions/349409/why-are-tk-guis-considered-ugly를 참조하십시오. –

+1

Tkinter는 기본적으로 Windows 및 macos에만 설치됩니다. 우분투 등에 설치해야합니다. – grigoryvp

5

"pure python gui library"라는 개념은 궁극적으로 시스템 수준의 호출과 위젯을 사용하고 ctypes를 통해 이루어지기 때문에 잘못되었습니다. 그러나 아이디어를 구현하기 시작하면 결국 wxPython이됩니다.

5

기본적으로 GTK, Tk, Wx, QT 및 ilk 제조사가 이미 수행 한 바퀴를 다시 발명한다는 것이 잘못되었습니다. 순수한 파이썬 GUI가 기술적으로 실현 가능하고 anygui과 같은 프로젝트가 비슷한 것을 시도했지만, 이렇게함으로써 얻는 것이 상대적으로 적습니다.

기본 툴킷은 기본 플랫폼 (기본 대화 상자 등) 간의 차이점을보다 잘 처리합니다. 즉, 툴킷을 사용하면 특정 플랫폼 코드가 거의 필요없는 이식 가능한 애플리케이션을 작성할 수 있습니다. 대부분이 기본 툴킷에 의해 추상화됩니다.

Windows의 py2exe 및 Linux 메소드와 같은 배포 메커니즘을 사용하면 DLL을 응용 프로그램과 번들로 사용할 수 있으므로 필요한 기본 구성 요소를 삭제하는 설치 프로그램을 만들 수 있습니다. 그러나 실제로이 작업을 수행하는 일반적인 교차 플랫폼 방법은 없으므로 각 플랫폼마다 별도의 설치 관리자를 유지 관리해야합니다.

10

파이썬 2.7과 3.1에서 시작하면 Tk가 훨씬 더 좋아 보일 것입니다.

http://docs.python.org/dev/whatsnew/2.7.html#ttk-themed-widgets-for-tk

"은 Tcl/Tk의 8.5 기본 TK에 위젯을하지만, 더 많은 사용자 정의 모양을 가지고 있고, 따라서 더 밀접하게 네이티브 플랫폼의 위젯과 유사 할 수 있습니다 구현 다시 테마 위젯의 집합이 포함되어 있습니다.이 위젯 세트는 원래 불렀다 Tile은 Tcl/Tck 릴리스 8.5에 추가 될 때 Ttk ("themed Tk"의 경우)로 이름이 바뀌 었습니다.