如何在 Kivy 的相应文本输入区域中获取输出?

Posted

技术标签:

【中文标题】如何在 Kivy 的相应文本输入区域中获取输出?【英文标题】:How to get outputs in their corresponding text input areas in Kivy? 【发布时间】:2017-06-03 14:32:42 【问题描述】:

我正在尝试在相应的文本输入框中显示一些输出,但是当我单击更新按钮时,输出应该在左侧输入框中,但当我单击更新按钮时,输出显示在左侧文本输入框本身(它会覆盖左侧输入区域中的任何内容)。

当我单击 Updatee 时,它​​应显示在右侧框中,当单击更新时,输出应显示在左侧输入框或区域中。与仅清除左侧框的清除功能相同,我希望它清除两者。我也只想要一个按钮,即只更新显示在相应的框中。

这是 Python 文件:

from kivy.app import App
from kivy.uix.gridlayout import GridLayout


class DemoGridLayout(GridLayout):
    def update(self, query):
        if query:
            a = query + str("Area 1")
            self.display.text = a

    def updatee(self, query):
        if query:
            a = query + str("Area 2")
            self.display.text = a

    def clear(self):
        self.display.text = ""


class DemoApp(App):
    def build(self):
        return DemoGridLayout()


demoApp = DemoApp()
demoApp.run()

Kivy 文件(作为 demo.kv):

<CustButton@Button>:
    font_size: 28
<DemoGridLayout>:
    id:test
    display:entry
    rows:3
    cols:2
    padding:10
    spacing:10
    BoxLayout:
        TextInput:
            id: entry
            font_size:20
            multiline:True
    BoxLayout
        TextInput:
            id: entrye
            font_size:20
            multiline:True
    CustButton:
        id: b1
        size_hint_y:0.1
        text:"Update"
        on_press:test.update(entry.text)
    CustButton:
        id: b2
        size_hint_y:0.1
        text:"Updatee"
        on_press:test.updatee(entrye.text)
    CustButton:
        size_hint_y:0.1
        size_hint_x:0.5
        text:"Clear"
        on_press:test.clear()

【问题讨论】:

你能举一个你尝试过的最小例子吗? 将在几个小时内上传图像,感谢您的关注,请稍后再检查,但基本上它 self.display.text 仅使用一个文本输入框输出,但从两个完美输入框请检查再次感谢您 我的意思是一个代码示例。然后我可以运行它,并告诉你可以做些什么来获得预期的结果。 发帖的专业提示:(a) 不要在此处明确要求“详细”或“逐步”的答案。在许多情况下,这是一个隐藏的要求,要求其他人完成所有工作,我们得到了很多 - 不要成为那些人中的一员。 (b) 不要在您的帖子或您的 cmets 中添加“尽快”或任何其他形式的乞讨。尝试插队的志愿者并不满意 - 他们会在闲暇时解决他们觉得有趣的问题。 Changing a Kivy Widget Text的可能重复 【参考方案1】:

这是更新的代码。您应该阅读官方文档以澄清您的疑问。在此过程中您会学到更多东西。

from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.properties import ObjectProperty

class DemoGridLayout(GridLayout):
    entry = ObjectProperty(None)
    entrye = ObjectProperty(None)
    def update(self, query):
        if query:
            a = query + str("Area 1")
            self.entry.text = a

    def updatee(self, query):
        if query:
            a = query + str("Area 2")
            self.entrye.text = a

    def clear(self):
        self.display.text = ""


class DemoApp(App):
    def build(self):
        return DemoGridLayout()

if __name__ == "__main__":
    demoApp = DemoApp()
    demoApp.run()

demo.kv =>

<CustButton@Button>:
    font_size: 28
<DemoGridLayout>:
    id:test
    display:entry
    rows:3
    cols:2
    padding:10
    spacing:10
    entry: entry
    entrye: entrye
    TextInput:
        id: entry
        font_size:20
        multiline:True
    TextInput:
        id: entrye
        font_size:20
        multiline:True
    CustButton:
        id: b1
        size_hint_y:0.1
        text:"Update"
        on_press:test.update(entry.text)
    CustButton:
        id: b2
        size_hint_y:0.1
        text:"Updatee"
        on_press:test.updatee(entrye.text)
    CustButton:
        size_hint_y:0.1
        size_hint_x:0.5
        text:"Clear"
        on_press:test.clear()

我特意留下了清晰的部分让你去锻炼。

【讨论】:

非常感谢,我的愚蠢之处在于阅读文档谢谢【参考方案2】:

我没有清楚地知道您要问什么,但是是的,我会为您提供可能有助于回答您的问题的最少代码。我设计了此代码来复制您的案例。如果您是新手,link 将有所帮助你开始吧。继续使用 Kivy,它很棒。

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.button import Button
from kivy.lang import Builder


Builder.load_string('''
#: import Platform kivy.utils.platform
<Interface>:
    orientation: 'vertical'
    TextInput:
        id:label
        hint_text: "enter text"
    Button:
        text:"change label and text_hint" 
        on_press:label2.hint_text=label.text
    Label:
        id:label3
        text:label.text
    TextInput:
        id:label2
        text_hint:label.text
''')


class Interface(BoxLayout):
    pass


class SampleApp(App):

    def build(self):
        return Interface()

if __name__ == "__main__":
    app = SampleApp()
    app.run() 

【讨论】:

请现在检查,希望它清楚我是一个新手,所以如果它是一个愚蠢的错误,请不要生我的气,因为我是一个新手,所以一个详细的答案将不胜感激...... .需要尽快回答

以上是关于如何在 Kivy 的相应文本输入区域中获取输出?的主要内容,如果未能解决你的问题,请参考以下文章

如何在kivyMD中获取标签的文本输入

在 Kivy 应用程序中获取文本输入值

Kivy 无法使用 ScreenManager 获取文本输入

kivy 如何在 TextInput 中获取文本?

如何从 kivy 按钮中获取文本?

如何在 python 中获取用户输入(Kivy 框架)