gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 03:07:01 25 4
gpt4 key购买 nike

我目前正在为一个学校项目使用 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

我现在需要让文本框显示在 Python 文件中;但是,对于如何执行此操作,我有些不知所措?我的 Python 代码如下:

from kivy.app import App
from kivy.uix.textinput import TextInput
from kivy.uix.label import Label

class TextInputTest(App):

def __init__(self, *args, **kwargs):
return TextInput

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

我几乎可以肯定我在这里遗漏了一些东西,可能是一些非常简单的东西,但我是 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 的 AnswerInput 查看你加载的 kv 文件,看看是否有一个与它自己同名的根小部件。

(RootWidget 表示 <> 中封装的一堆 kv 逻辑的顶级 widget)

但是您必须首先知道如何加载 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 文件直接加载到您的应用中。

关于python - 如何使用 Kivy 显示文本输入框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48565774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com