2013-07-21 9 views
5

Ich arbeite an einem RPG-Spiel, das Python und Pygame verwendet, und versuche, eine zweiteilige GUI herzustellen, die einen unteren Teil wie die grundlegende Befehlszeile und einen oberen Teil enthält Teil, der alle grafischen "Aktionen" zeigt.Wie man Texteingabe von einer pygame GUI annimmt

Was ich herausfinden muss, ist eine Möglichkeit, beide in ein Pygame-Fenster zu integrieren, anstatt ein Pygame-Fenster und ein Terminal-Fenster zu verwenden. Gibt es auch irgendwelche Pygame GUI Toolkits, die für diesen Zweck geeignet sind?

Vielen Dank!

+0

, dass mehr oder weniger das gleiche was ich mache und während es aussieht wie ezText ist gut und ich werde es wahrscheinlich benutzen, ich werde nur alle gegen pgu beraten. Es ist schlecht dokumentiert und macht alles schwierig. –

+0

Obwohl, wenn Sie noch eine Eingabe benötigen, sieht diese Datei wie ein vielversprechender Start aus: http://www.pygame.org/pcr/inputbox/inputbox.py –

+0

Eigentlich scheint dies Ereignisse aus der gesamten pygame-Sitzung zu sammeln, also macht nichts. –

Antwort

5

Kann ich stattdessen ezText verwenden? Es ist eine coole Möglichkeit, um Pygame Text inuit Bars hinzuzufügen. Ich habe es vor mir selbst benutzt und es ist wirklich einfach zu benutzen.

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

(fühlen sich frei, um einen Kommentar zu lassen, wenn Sie helfen, es zu benutzen wollen, obwohl alles, was Sie wissen müssen, um in der example.py ist die mit ihm kommt)

+0

Danke, Mann! Ich denke ich werde das benutzen. – Pip

+1

Gibt es einen einfachen Weg zu erkennen, ob sich die Texteingabe im "Vordergrund" befindet (es war das Letzte, auf das geklickt wurde)? Denn es wäre das Beste, wenn es nur Ereignisse aufnehmen würde und aktualisiert würde, wenn dies der Fall wäre, und es mir schwer fällt, es zu tun. –

2

Schauen Sie hier (http://wiki.python.org/moin/PythonGameLibraries) für eine ganze Liste von ToolKits für Pygame und Pyglet. Albow (http://www.cosc.canterbury.ac.nz/greg.ewing/python/Albow/) hat in der Vergangenheit gut für mich gearbeitet.

Der einfachste Weg, um zu erreichen, worüber Sie sprechen, wäre, zwei Oberflächen zu machen, eine für jeden Teil der Schnittstelle, und sie dann ständig in separaten Modulen zu aktualisieren, um sie schließlich in jedem Frame zu blitten. So kann Ihr Hauptmodul zu etwas vereinfacht werden:

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) 

Viel Glück.

+0

Sehr cool (und nützlich: D). Ich denke nicht, dass ich das verwenden werde, aber danke für die Antwort! Ich bin sicher, dass ich das irgendwann nutzen kann! – Pip

Verwandte Themen