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
Vielen Dank! – SolaOmi
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. –