2017-06-06 2 views
0

Ich habe mit der Kivy-Bibliothek gespielt und habe versucht, eine GUI für das Spiel Henker [1] zu erstellen. Ich versuche, ein TextField zu erstellen, das ein Benutzer einen einzelnen Buchstaben eingibt, und es ändert den Schaltflächentext ONLY, wenn sie Return/Enter anstelle des konstanten Streams, den textinput.text gibt, drücken.(Kivy/Python) Text vom Texteingabe-Widget speichern, wenn Benutzer hits eingeben

Ich habe die Dokumente und andere stackoverflow Q & A's angeschaut und es scheint die Lösung liegt entweder mit dem on_text_validate Ereignis oder Ändern meiner Clock.schedule.interval Setup, aber ich kann nicht herausfinden, wie man es implementieren mein Code.

Meine Python-Datei:

from kivy.app import App 
from kivy.clock import Clock 
from kivy.uix.widget import Widget 
from kivy.uix.label import Label 
from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.floatlayout import FloatLayout 
from kivy.uix.textinput import TextInput 


class HangmanBoard(BoxLayout): 
    word = 'hangman' 
    empty = ["_"]*len(word) 

    def update(self, *args): 
     empty_word = self.ids['labelA'] 
     letter_input = self.ids['labelB'] 

     guess = letter_input.text 
     empty_word.text = ' '.join(self.empty) 

     if guess in self.word: 
      for i in range(len(self.word)): 
       if guess == self.word[i]: 
        self.empty[i] = guess 


     print(guess) 

class HangmanApp(App): 

    def build(self): 
     game = HangmanBoard() 
     Clock.schedule_interval(game.update, 1) 
     return game 


if __name__ == '__main__': 
    HangmanApp().run() here 

Meine Kv-Datei:

<HangmanBoard>: 
orientation: 'vertical' 

Button: 
    id: labelA 
    font_size: 60 
    size_hint: 1, 0.5 
TextInput: 
    id: labelB 
    font_size: 60 
    pos_hint: {'center_x':0.5} 
    size_hint: 1, 0.5 
    focus: True 
    multiline: False 

Antwort

0

Ja, können Sie entweder einen Mechaniker mit Clock-Ereignisse "wenn der Benutzer aufhörte für 1 Sekunde eingeben" oder einfach nur ein on_text_validate aktualisieren Sie den Text der Taste, die letztere einfacher und unkomplizierter ist:

TextInput: 
    on_text_validate: 
     labelA.text = self.text 
    # ... 
+0

Vielen Dank! – SolaOmi

+0

Kein Problem! Überlegen Sie, die Antwort zu akzeptieren. Ich habe auch ein Projekt mit der "wenn der Benutzer aufhört zu tippen" Mechanik, so dass ich die relevanten Teile hochziehen kann, wenn Sie es brauchen werden. –

Verwandte Themen