2012-05-08 10 views
8

Piszę małą grę sudoku/solver w Linuksie używając Pythona z TUI (nie GUI, to tylko lame) dla zabawy. Moje pytanie brzmi: która biblioteka jest lepsza (mam tu na myśli łatwiejszą obsługę, lepszą obsługę, bardziej prostą i zrozumiałą), wybory są curses lub urwid lub czy ktoś ma lepsze sugestie i dlaczego? Mam pewne doświadczenia z Tkinter i wxPython.Python TUI libs

Każda pomoc lub informacja zostanie doceniona.

+0

Jeśli hostujesz swój kod gdzieś kiedyś, daj nam znać. – ychaouche

Odpowiedz

9

Być może zechcesz wypróbować Unicurses, który otacza moduł curses z rdzeniem Pythona w systemach UNIX i opakowuje darmową bibliotekę pdcurses na komputerach z systemem Windows.

Ta biblioteka ma na celu emulację składni i stylu oryginalnej biblioteki ncurses, więc jeśli interesuje Cię nauka projektowania TUI za pomocą programowania w stylu curses, to sprawdź to.

to, z tej niewielkiej dokumentacji, którą przeczytałem, bardzo interesująca biblioteka, która wykorzystuje pętle zdarzeń (reactor pattern) jako podstawę do projektowania aplikacji, podobnie jak tkinter lub Twisted. Ponadto, urwid ma klasę pętli zdarzeń zaprojektowaną specjalnie do użycia z Twisted, więc jeśli twoim celem jest stworzenie TUI do użycia w sieciach, to jest to dobry wybór. Twisted wykorzystuje również wzorzec reaktora, więc jeśli chcesz się uczyć w stylu , który jest w stylu, polecam go.

Na koniec, jeśli używasz biblioteki w stylu ncurses, sprawdź kod Dan Gookin's book on ncurses. Jest to bardzo dobry zasób i tylko ten, którego znam, jest dzisiaj w druku.

Dostępne są inne opcje, takie jak newt, pygcurses itd., Ale powinno się zacząć. Powodzenia, dziś programowanie TUI jest jednym z tych technologicznych fetyszy, które mogą być trudne do złamania, ale jest to satysfakcjonujące.

+0

Ponieważ nie dbam o windose, unicurses mogą być niepotrzebne. Newt wygląda dobrze, kup jego nazwę przypomina mi koszmar nominacji GOP ... Widziałem kilka przykładów gier TUI na stronie pygcurse, to jest bardziej mój cel. Dziękuję Ci bardzo. – lllluuukke

+1

Cóż, jeśli masz nadzieję dostać się do gry z przekleństwami, sprawdź także [libtcod] (http://doryen.eptalys.net/libtcod/), bardzo potężną bibliotekę TUI dla roguelików i innych. Jest to praktycznie biblioteka do samodzielnego programowania w języku Python, która nie jest połączona z siecią i jest stosunkowo łatwa w użyciu. – Chazu

+0

Jeszcze raz dziękuję za pomoc. – lllluuukke

1

Jeśli twoja gra będzie działać w konsoli, po prostu wybierz curses.

Jeśli twoja gra będzie działać jako aplikacja GUI, po prostu wybierz PySide.

4

Chociaż powyższe jest całkowicie rozsądnym rozwiązaniem dla systemu Linux, OP poprosił o inne sugestie i uzasadnienie dla nich.

Kto chce używać API niskiego poziomu, takiego jak curses w nowoczesnym języku OO, takim jak Python? Nie mówiąc już o tym, że utknąłeś w systemie Windows (którego OP nie jest, ale jest problemem dla wielu ludzi) ... Musi istnieć lepszy sposób.

Aby rozwiązać ten problem, stworzyłem prostą klasę cross-platform (tak - system Windows jest dołączany bez przywrócenia wartości PDcurses), aby wykonać wszystkie rzeczy, których większość ludzi chce od swojego terminala/konsoli. Jeśli korzystasz z Linuksa, jest to bardziej ludzki sposób na programowanie przekleństw. Jeśli korzystasz z systemu Windows, ta sama klasa działa tak, jak nie ma zewnętrznych zależności binarnych. Możesz znaleźć klasę ekranu w https://github.com/peterbrittain/asciimatics.

Dodatkowo utworzyłem ładunek obiektów o wyższym poziomie do tworzenia animacji i TUI. Na przykład, jest to zapis próbki za pomocą widgetów TUI:

Text UI widgets

Jeśli istnieje dodatkowa cecha trzeba, daj mi znać, a ja zobaczę, co mogę zrobić.

+0

Holy Crap, ta biblioteka jest niesamowita! dzięki za udostępnienie! <3 – elias