Python 如何使用Kivy显示文本输入框?

Python 如何使用Kivy显示文本输入框?,python,kivy,kivy-language,Python,Kivy,Kivy Language,我目前正在为一个学校项目在Kivy中编写一个应用程序,我不得不在Kivy的最深处投入。我已经为文本输入编写了kv代码,您可以在下面看到: AnswerInput: <AnswerInput@BoxLayout>: orientation: "vertical" BoxLayout: height: "40dp" size_hint_y: None TextInput: size_hint_x:

我目前正在为一个学校项目在Kivy中编写一个应用程序,我不得不在Kivy的最深处投入。我已经为文本输入编写了kv代码,您可以在下面看到:

 AnswerInput:
 <AnswerInput@BoxLayout>:
    orientation: "vertical"
    BoxLayout:
        height: "40dp"
        size_hint_y: None
        TextInput:
            size_hint_x: 20
        Button:
            text: "Check Answer"
            size_hint_x: 25

我几乎可以肯定,我在这里遗漏了一些东西,可能是一些非常简单的东西,但我对Kivy非常熟悉。如果有人能让我走上正轨,我将不胜感激。

首先,这并不清楚,但您需要将代码分为py文件和kv文件。看来你已经这么做了。您的kv文件也需要全部小写

在py文件中,为kivy小部件添加一个类。在这种情况下:

from kivy.uix.boxlayout import BoxLayout

class AnswerInput(BoxLayout):
    pass
然后在您的kv文件中:

 <AnswerInput>:
    orientation: "vertical"
    BoxLayout:
        height: "40dp"
        size_hint_y: None
        TextInput:
            size_hint_x: 20
        Button:
            text: "Check Answer"
            size_hint_x: 25
py中的应用程序类将为

TextInputTest(App): 
or 
TextInputTestApp(App):
您不需要这样做,还可以使用生成器模块加载文件本身,事实上,如果您有多个kv文件,则需要这样做

要执行此操作,请在py文件中执行以下操作:

from kivy.lang.builder import Builder

Builder.load_file('textinputtest.kv')
您还返回textinput类的对象,您要做的是返回自定义textinput类的对象

您的Py文件如下所示:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout

class AnswerInput(BoxLayout):
    pass

class TextInputTest(App): # If your kv file is called textinputtest.kv

    def build(self):
        return AnswerInput()

if __name__ == '__main__':
    TextInputTest().run()

或者,你可以给你的应用命名任何你想要的名字,然后使用builder将相关的kv文件直接加载到你的应用中。

如果name\uuu==“\ uuuu main”不应该在你的类中,请查看描述它的kv语言文档
from kivy.lang.builder import Builder

Builder.load_file('textinputtest.kv')
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout

class AnswerInput(BoxLayout):
    pass

class TextInputTest(App): # If your kv file is called textinputtest.kv

    def build(self):
        return AnswerInput()

if __name__ == '__main__':
    TextInputTest().run()