(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 提供的恒定流。

我查看了文档和其他 *** 问答,似乎解决方案在于 o​​n_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/Python 中作为线程运行时表现奇怪的函数

Kivy,Python3.5 - 将用户文本输入绑定到类中的方法

当用户单击按钮时从数组中删除对象

如何将文本输入值添加到kivy python中字典中的值?

点击时从 UICollectionView 中的单元格获取图像

安装kivy Python 3.8.3 [重复]