2012-05-08 2 views
8

저는 재미있는 것을 위해서 TUI (GUI가 아니라 파이썬이 아닌)를 사용하여 파이썬을 사용하여 리눅스에서 작은 스도쿠 게임/솔버를 쓰고 있습니다. 내 질문은 lib가 더 낫다는 것이다. (더 쉽게 처리하고, 더 잘 지원하고, 더 직설적이며, 이해할 수 있음을 의미한다.) 선택은 curses 또는 urwid이거나 더 나은 suggention을 갖고 있고 왜 그런가? Tkinter와 wxPython에 대한 경험이 있습니다.Python TUI libs

도움이나 정보를 제공해 주시면 감사하겠습니다.

+0

언젠가 언젠가 코드를 호스팅한다면 알려주십시오. – ychaouche

답변

9

Unicurses은 UNIX 시스템에서 python core curses 모듈을 랩핑하고 Windows 기반 컴퓨터에서 무료 pdcurses 라이브러리를 래핑하는 것이 좋습니다.

이 라이브러리는 원래 ncurses 라이브러리의 구문과 스타일을 에뮬레이트하도록 설계되었으므로 curses 스타일 프로그래밍을 사용하여 TUI 디자인을 배우고 싶다면 체크 아웃하십시오.

Urwid은 내가 읽은 작은 문서에서 이벤트 루프 (reactor pattern)를 tkinter 또는 Twisted와 같은 응용 프로그램 설계의 기초로 사용하는 매우 흥미로운 라이브러리입니다. 또한 urwid는 Twisted와 함께 사용하도록 특별히 설계된 이벤트 루프 클래스를 가지고 있으므로 네트워크를 통해 사용할 TUI를 만드는 것이 목표라면 좋은 선택입니다. Twisted는 원자로 패턴을 사용하기 때문에 스타일을 배우고 싶다면이 패턴을 사용하는 것이 좋습니다.

마지막으로 ncurses 스타일 라이브러리를 사용하는 경우 Dan Gookin's book on ncurses을 확인하십시오. 아주 좋은 자료이고, 내가 알고있는 단 하나는 오늘 인쇄되어 있습니다.

newt, pygcurses 등과 같은 다른 옵션이 있지만 시작해야합니다. 행운을 빈다, 오늘 TUI 프로그래밍은 침입하기가 어려울 수있는 기술 페티시 중 하나이지만 보람적입니다.

+0

나는 위세 (windose)에 관심이 없으므로 유니 케어가 필요하지 않을 수 있습니다. Newt는 좋아 보인다, 그것의 이름을 사면 GOP 지명 악몽을 생각 나게한다 ... 나는 pygcurse의 사이트에서 TUI 게임의 몇 가지 예를 보았다. 그것은 내 목적이 더 많다. 고맙습니다. – lllluuukke

+1

게임 개발에 저주가되기를 원한다면 roguelikes 등을위한 매우 강력한 TUI 라이브러리 인 [libtcod] (http://doryen.eptalys.net/libtcod/)를 확인하십시오. 파이썬으로 네트워크화되지 않은 roguelike 개발과 그 사용법이 비교적 쉬운 곳입니다. – Chazu

+0

다시 도움 주셔서 감사합니다. – lllluuukke

1

게임이 콘솔에서 실행되는 경우 curses을 선택하십시오.

게임이 GUI 애플리케이션으로 실행되는 경우 PySide을 선택하십시오.

4

위의 내용은 Linux에서 완벽하게 합리적인 해결책이지만 OP는 다른 제안을하고이를 정당화 할 것을 요청했습니다.

누가 Python과 같은 현대 OO 언어에서 curses와 같은 저수준 API를 사용하고 싶습니까? 혼자 내버려두면 Windows 내에서 (OP는 아니지만 많은 사람들에게 문제가됩니다) ... 더 좋은 방법이 있어야합니다.

이 문제를 해결하기 위해 대부분의 사람들이 터미널/콘솔에서 원하는 모든 작업을 수행하기 위해 간단한 크로스 플랫폼 클래스 (예 : Windows가 PDcurses로 되돌아 가지 않고 포함되어 있습니다.)를 작성했습니다. 리눅스를 사용한다면 이것은 인간이 저주를 프로그램하는 방법입니다. Windows를 사용하는 경우 외부 바이너리 종속성없이 동일한 클래스가 작동합니다. Screen 클래스는 https://github.com/peterbrittain/asciimatics에 있습니다.

또한 애니메이션 및 TUI를 만들 때 높은 수준의 개체로드를 생성했습니다. 당신이 필요로하는 추가 기능이 있다면

Text UI widgets

이 저에게 알려 주시면 내가 무엇을 할 수 있는지 볼 수 있습니다 : 예를 들어,이 상기 TUI 위젯을 사용하여 샘플의 기록이다.

+0

거룩한 쓰레기,이 도서관은 굉장합니다! 공유해 주셔서 감사합니다! <3 – elias

관련 문제