首先,这还不清楚,但您需要将代码分成 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 的 AnswerInput 会查看加载的 kv 文件,以查看是否存在与其自身同名的根小部件。
(RootWidget 表示封装在 中的一堆 kv 逻辑的顶部小部件)
然而,您必须首先知道如何加载 kv 文件,有两种方法可以做到这一点。如果您仅使用一个 kv 文件,则可以将应用程序命名为与 kv 文件相同的名称。
所以如果你的 kv 文件是
textinputtest.kv
您的 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()
或者,您可以将应用程序命名为任何您想要的名称,然后使用构建器将相关的 kv 文件直接加载到您的应用程序中。