如何在 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 的相应文本输入区域中获取输出?的主要内容,如果未能解决你的问题,请参考以下文章