2013-07-03 22 views
5
import tkinter as tk  
import pygame 

pygame.init() 
ss = width, height = 1024, 600 
screen = pygame.display.set_mode(ss) 
tkinput_1 = True  

while True: 

    event = pygame.event.poll() 
    keys = pygame.key.get_pressed() 

    if event.type == pygame.QUIT: 
     pygame.quit() 
     sys.exit() 

    screen.fill((0,0,0)) 

    if tkinput_1 == True: 
     tkinput_root1 = tk.Tk() 
     tkinput_root1.geometry("200x200") 
     tkinput_root1.title("How many teams?") 
     tkinput_input1 = tk.Entry(tkinput_root1) 
     tkinput_1 = False 

    pygame.display.update() 

tkinput_root1.mainloop() 

Questo ero solo io che ho dato al box di input del testo di tkinter un colpo in pygame. Ero abbastanza sicuro che non avrebbe funzionato correttamente, ma ho deciso di provarlo comunque perché non avevo nulla da perdere. La schermata di tkinter non viene visualizzata fino a quando non esci da pygame. Quindi, non sto chiedendo se qualcuno sa come risolvere il codice, ma se qualcuno conosce il modo più semplice per creare una casella di testo in pygame. So che esiste un modulo di classe textinput che può essere importato. Se credi che sia il modo più semplice per farlo, puoi passarmi attraverso. Se no, per favore fammi sapere cosa pensi sia la via più facile. È un programma piccolo, quindi voglio evitare un sacco di linee pesanti di codice per una semplice casella di testo. Fatemi sapere cosa pensate voi ragazzi. Grazie mille in anticipo.Utilizzo di input di testo in pygame

+0

C'è in realtà un modo per mettere un display di pygame all'interno di un'applicazione tkinter, ma è molto più difficile di quanto non ne valga la pena. Anche se alla fine l'ho fatto, ci sono così tanti errori che sono accaduti anche dopo che ha funzionato per qualche secondo che ho rinunciato e ho deciso di usare EzText –

risposta

6

Ho provato utilizzando Tk, ma la cosa è sull'utilizzo si ferma l'intero programma pygame quando la finestra Tk si apre e il suo solo non va bene

questo è quello che io uso Pygame InputBox non la sua la più bella ma funziona grande basta scaricarlo e la sua veramente facile da usare

solo import inputbox

poi fare qualcosa di simile:

inp = int(inputbox.ask(screen, 'Message')) #inp will equal whatever the input is 

questo è più o meno come raw_input ma per Pygame

la sua non il più esteticamente gradevoli, ma sono sicuro che se si cerca in giro si possono trovare forse un posto più bello uno

+0

Ciao Christian, stavo per usare inputbox in origine ma ottengo un errore durante l'esecuzione it .... AttributeError: l'oggetto 'module' non ha attributo 'join' ... dove dice string.join.Ho esaminato il codice e tutto sembra a posto, ma non ho completamente familiarità con tutto ciò che sta accadendo nel file py di inputbox. Sto usando python 3.3 e pygame 3.3, potrebbe essere un problema? Grazie per la risposta. –

+0

questo è ciò che accade quando si esegue il file di inputbox o il file di gioco principale – Serial

+0

Entrambi, l'errore si è verificato durante l'esecuzione del file di gioco principale. Ho quindi eseguito il file inputbox.py e ho ottenuto lo stesso errore. Mi è stato detto che molte vecchie funzioni sono state rimosse dal modulo 'stringa', ma non sono sicuro di come lo risolverei. Sono stato sorpreso che guardandosi intorno su Internet, nessun altro sembrava incontrare lo stesso problema. Qualche idea? –

1

mi consiglia di utilizzare ezText. È un ottimo modo per aggiungere input di testo nei tuoi programmi pygame. L'ho usato personalmente da solo ed è bello e facile e funziona con Python 3.3.2.

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

1

Per quanto riguarda quello che hai detto riguardo l'errore con InputBox, tutto quello che dovete fare trovare e sostituire in tutto il mondo si dice (senza le virgolette) string.join(current_string,"") con "".join(current_string), poiché credo che questa è una novità in python 3.4, comunque, spero che aiuti.

2

È possibile utilizzare una piccola libreria che sto creando, basta scaricare it e usarlo.

Per effettuare una semplice scatola di testo prova:

from GUI import * 

input_bow = InLineTextBox((0, 0), 200) 

si deve dare almeno un postion e la dimensione Poi, nel vostro ciclo di ingresso, aggiornarlo:

for e in pygame.event.get(): 
    input_box.update(e) 

e al fine, lo rendono:

input_box.render(screen) 

è possibile ottenere il testo con input_box.text a in qualsiasi momento