|
Blog > Komentarze do wpisu
Python, curses i Windows - a jednak się da!Pisząc o curses, wbrew pozorom, nie mam na myśli rzucania przekleństw. Choć biorąc pod uwagę ile czasu zajęło mi znalezienie rozwiązania jak uruchomić skrypty Pythona wykorzystujące bibliotekę curses w systemie Windows taka interpretacja nie odbiega znacznie od rzeczywistości. Skoro ja miałem takie kłopoty to inni pewnie też na nie się natkną. Dlatego postanowiłem podzielić się rozwiązaniem. CursesW wielkim skrócie biblioteka curses (jak i nowsza ncurses) pozwala na tworzenie TUI (Text User Interface) - interfejsów tekstowych, będących czymś pomiędzy CLI (Command Line Interface) a GUI (Graphical User Interface). Co ważne używając jej nie musimy martwić się o to, z jakiego terminala będą korzystać użytkownicy programu. Do naszej dyspozycji mamy możliwość tworzenia wirtualnych okien, wyświetlanie znaków w 16 kolorach oraz obsługę klawiatury i myszy. Mogłoby się wydawać, że aplikacje tekstowe to już odległa przeszłość, nadal jednak są powszechnie wykorzystywane. Nie zawsze mamy dostęp do środowiska graficznego, nie zawsze chcemy też go używać. Gdy priorytetem jest niskie zużycie pamięci i szybkość działania programy konsolowe sprawdzają się znakomicie. Przykładami użycia biblioteki (n)curses są Midnight Commander (menadżer plików podobny do Norton Commandera), ELinks (przeglądarka www, o której już kiedyś pisałem), Mutt (klient poczty), czy EKG (klient Gadu-Gadu), by wymienić kilka z brzegu. Nie zapominajmy też o wszelkiej maści grach roguelike. Curses + PythonPython jest stosunkowo prosty, przyjemny i przenośny. Jeśli chcemy szybko napisać jakieś mniej lub bardziej proste narzędzie jest jak znalazł. W dodatku od razu mamy do dyspozycji moduł curses, zawierający interfejs do biblioteki (n)curses. Dodatkowo dostępny jest przystępny tutorial curses i kilka przykładowych programów. Wydawałoby się, że nic innego nie pozostaje tylko usiąść przy edytorze i pisać! O ile korzystamy z systemów unixowych problemów rzeczywiście nie ma. Gdy jednak chcemy uruchomić nasz program w Windowsie... cóż... Curses + Python + WindowsTu dochodzimy do sedna problemu. W domyślnej instalacji Pythona dla systemu Windows brak jest obsługi biblioteki curses. Zaglądamy do Google i... zdecydowana większość wyników to narzekanie na brak curses pod Windowsem. Pojawiająca się dość wysoko w wynikach biblioteka wcurses teoretycznie powinna rozwiązać problem. Niestety dostępne na stronie wcurses 0.2, zarówno w Pythonie 2.5 jak i 2.6.4, działać nie chcą. Jedynie co zobaczymy to komunikat o niemożności załadowania biblioteki DLL. Prawdopodobnie wystarczy skompilować wcurses ze źródeł, ale nie mam dość czasu/chęci/narzędzi/umiejętności. Pythonowego wrappera dla PDCurses też nie widać. Gdy już prawie zrezygnowałem, udało mi się znaleźć zbiór rozszerzeń dla Pythona przygotowany przez Christopha Gohlke (mój mirror bibliotek związanych z curses). Ściągnąć tam można implementację opartą o PDCurses, jak i działające z Pythonem 2.6.4 wcurses. Pierwsza wersja działa "normalnie", w oknie konsoli.
Wcurses tworzą nowe okno i emulują działanie konsoli tekstowej.
Już na tym prostym przykładzie można zauważyć kilka różnic w sposobie wyświetlania. Podejrzewam, że wcurses może sprawiać więcej problemów i nie wszystko jest tam poprawnie zaimplementowane. Ale najważniejsze, że są dostępne jakieś rozwiązania. wtorek, 09 marca 2010, kosciak1
TrackBack
|
|