2013-07-21 13 views
5

Pracuję nad grą RPG, używając Pythona i Pygame, i próbuję utworzyć dwuczęściowy GUI, w tym niższą część, która jest podobna do podstawowej linii poleceń, i górę część, która pokaże wszystkie graficzne "działania".Jak akceptować wprowadzanie tekstu z GUI pygame

Potrzebuję dowiedzieć się, jak włączyć oba elementy do okna pygame zamiast okna pygame i okna terminala. Jak dobrze są dostępne zestawy narzędzi GUI Pygame, które byłyby odpowiednie do tego zastosowania?

Dzięki wszystkim!

+0

To jest mniej więcej taka sama co robię i chociaż wygląda na to, że ezText jest dobry i prawdopodobnie go użyję, po prostu poradzę wszystkim przeciwko pgu. Jest to słabo udokumentowane i utrudnia pracę. –

+0

Chociaż nadal potrzebujesz danych wejściowych, plik ten wygląda obiecująco: http://www.pygame.org/pcr/inputbox/inputbox.py –

+0

W rzeczywistości wydaje się, że gromadzi zdarzenia z całej sesji pygame, więc nieważne. –

Odpowiedz

5

Czy mogę zamiast tego zaproponować użycie ezText? To fajny sposób dodawania pasków wejściowych tekstu do pygame. Użyłem go przed sobą i jest naprawdę łatwy w użyciu.

http://www.pygame.org/project-EzText-920-.html

(krępuj komentarz, jeśli chcesz pomóc używając go opuścić, mimo wszystko trzeba wiedzieć w example.py że jest z nim)

+0

Dzięki, stary! Myślę, że to wykorzystam. – Pip

+1

Czy istnieje łatwy sposób na sprawdzenie, czy wprowadzanie tekstu jest na "pierwszym planie" (to było ostatnie kliknięcie)? Ponieważ byłoby najlepiej, gdyby zajmował tylko wydarzenia i był aktualizowany, jeśli tak było, i trudno mi to zrobić. –

2

Proszę spojrzeć tutaj (http://wiki.python.org/moin/PythonGameLibraries), aby uzyskać pełną listę ToolKitów dla Pygame i Pyglet. Albow (http://www.cosc.canterbury.ac.nz/greg.ewing/python/Albow/) działa dobrze dla mnie w przeszłości.

Najprostszym sposobem osiągnięcia tego, o czym mówisz, jest utworzenie dwóch powierzchni, po jednej dla każdej części interfejsu, a następnie ciągłe aktualizowanie ich w oddzielnych modułach, aby w końcu zabłysnąć każdą klatkę. W ten sposób Twój główny moduł może zostać uproszczony na przykład:

import action_gui 
import cl_gui 
import pygame 

pygame.init() 
MAIN_SURF = pygame.display.set_mode((x, y)) 
pygame.display.set_caption('My Game') 

while (True): 
    action_surf = action_gui.update() 
    cl_surf = cl_gui.update() 
    MAIN_SURF.blit(action_surf, my_position_1) 
    MAIN_SURF.blit(cl_surf, my_position_2) 

Powodzenia.

+0

Bardzo fajny (i użyteczny: D). Nie sądzę, bym tego użył, ale dziękuję za odpowiedź! Jestem pewien, że będę mógł w końcu z tego skorzystać! – Pip

Powiązane problemy