Python: Ukrycie okna konsoli w Windows

Jedynym mankamentem jaki pojawił się podczas uruchamiania skryptu wykorzystującego GUI w Windowsie, było wyskakujące czarne okienko konsoli… Rozwiązanie tego problemu znalazłem dość szybko i jest ono niesamowicie proste. Otóż w instalacji Windowsowej istnieją dwa interpretery – jeden konsolowy (python.exe)  oraz jeden Windowsowy (pythonw.exe).

Aby skorzystać z tego drugiego podczas wykonywania własnego skryptu wystarczy zmienić rozszerzenie z .py na .pyw.

Po takiej zamianie okno konsoli już nie będzie straszyć użytkowników programu 😉

Reklamy

Konsola AGE

Konsola do AGE wreszcie skończona. Na początek zmagałem się z obsługą wyświetlania, dodawania linii i opcjami takimi jak „przewijanie” konsoli i czyszczenie ekranu konsoli. Następnym krokiem było wprowadzanie komend do konsoli. Tutaj na początku wydawało mi się to bardzo trudne ze względu na to że musiałbym sobie sam zakodować obsługę klawisza SHIFT. Tutaj jednak z pomocą przyszedł mi unikod. Można go w SDLu włączyć za pomocą wywołania:

SDL_EnableUNICODE(true);

Wtedy struktura eventu klawiatury otrzymywanego od SDL jest wypełniona dodatkowo o kod wciśniętej kombinacji klawiszy w unikodzie. To bardzo mi pomogło ponieważ po wciśnięciu SHIFT+0 od razu dostałem znak ‚)‚ zatem nie musiałem się już martwić o takie rzeczy.

Później dodałem jeszcze obsługę klawiszy:

  • PageUp, PageDown, Strzałki – dół, góra: przewijanie konsoli
  • Strzałki – prawo, lewo: przesuwanie karetki w prawo/lewo
  • CTRL + prawo/lewo: przesuwanie karetki o całe wyrazy
  • (CTRL +) Backspace/Delete: usuwanie znaków/wyrazów przed i za karetką
  • Home/End: przejście na początek/koniec linii

Możliwe, że w przyszłości dodam jeszcze uzupełnianie komendy za pomocą klawisza TAB.

Końcąwą fazą tworzenia konsoli był jej kluczowy element – dodanie obsługi wpisywanych komend. Rozwiązanie już mialem (z poprzedniej wersji AGE). Teraz wystarczyło prawie skopiować kod i troszkę go przystosować.

Planuję jeszcze dodać wbudowaną komendę help która pokazywałaby pomoc dla komendy podanej jako argument. Oczywiście użytkownik AGE mógłby stworzyć ją sam, ale wtedy miałby z tym więcej pracy. Co o tym sądzicie?