(Kivy/Python)当用户点击输入时从 textinput 小部件存储文本
Posted
技术标签:
【中文标题】(Kivy/Python)当用户点击输入时从 textinput 小部件存储文本【英文标题】:(Kivy/Python) Store text from textinput widget when user hits enter 【发布时间】:2017-11-08 01:39:48 【问题描述】:我一直在玩 kivy 库,并一直在尝试为游戏刽子手创建一个 GUI [1]。我正在尝试创建一个用户输入单个字母的 TextField,当他们按下返回/输入时,它会更改按钮文本 ONLY,而不是 textinput.text 提供的恒定流。
我查看了文档和其他 *** 问答,似乎解决方案在于 on_text_validate 事件或更改我的 Clock.schedule.interval 设置,但我无法弄清楚如何在我的代码中实现它。
我的python文件:
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
我的 Kv 文件:
<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
【问题讨论】:
【参考方案1】:是的,您可以使用带有时钟事件的“当用户停止输入 1 秒”机制,或者只使用 on_text_validate
更新按钮的文本,后者更简单、更直接:
TextInput:
on_text_validate:
labelA.text = self.text
# ...
【讨论】:
非常感谢! 没问题!考虑接受答案。我还有一个带有“当用户停止输入”机制的项目,所以如果你需要的话,我可以调出相关部分。以上是关于(Kivy/Python)当用户点击输入时从 textinput 小部件存储文本的主要内容,如果未能解决你的问题,请参考以下文章
Kivy,Python3.5 - 将用户文本输入绑定到类中的方法