问题描述
相似/相关的链接并没有太大帮助:
我在这里待了几个小时,发现了与我类似的问题,但实际上没有任何作用。 这是我要尝试的操作:创建一个按钮,按下该按钮时,将拉出文本输入框,然后在短字符串后显示您在按钮上键入的内容。 EG按钮的开始像:“ LP:”您输入文本:“ 4000”按钮现在显示:“ LP:4000”我将如何做到这一点? 如果那不是完全可能的话,那么我只要按一下按钮就可以得到输入。 我什至似乎都无法做到。 对于Kivy来说是非常新的东西,而对于Python来说还相当新。 按钮代码(KV文件):
<FloatLayout>:
Button:
name: 'LP'
id: LP
text: "LP: 4000"
size_hint: 0.14, 0.15
pos_hint: {"left": 1, "top": 0.8105}
类(Py文件):
class LPInput(Widget):
pass
输入代码(KV文件):
<LPInput>:
size_hint: 0.14, 0.15
pos_hint: {"left": 1, "top": 0.8105}
TextInput:
id: lifepoint
text: ""
Label:
id: currlp #not sure this is doing anything
text: "LP: "
我写了一些其他的代码,试图通过不同的方法来创建它,但是让我沮丧的是,我保存了保存这些文件的文件,所以这就是我目前所拥有的。
1楼
下面的解决方案假定LPInput是根窗口小部件。
<LPInput>:
size_hint: 0.14, 0.15
pos_hint: {"left": 1, "top": 0.8105}
TextInput:
id: lifepoint
text: ""
Label:
id: currlp #not sure this is doing anything
text: "LP: "
<FloatLayout>:
Button:
name: 'LP'
id: LP
text: "LP: "
size_hint: 0.14, 0.15
pos_hint: {"left": 1, "top": 0.8105}
on_release:
self.text = "LP: " + app.root.ids.lifepoint.text
以下是针对Kv语言的三个关键字:
app :始终引用您的应用程序的实例。
root :指当前规则中的基本小部件/模板
self :始终引用当前小部件
例
main.py
from kivy.lang import Builder
from kivy.base import runTouchApp
runTouchApp(Builder.load_string('''
#:kivy 1.11.0
FloatLayout:
TextInput:
id: lifepoint
text: ""
size_hint: 0.14, 0.15
pos_hint: {"left": 1, "top": 0.8105}
Button:
name: 'LP'
id: LP
text: "LP: "
size_hint: 0.14, 0.15
pos_hint: {"right": 1, "top": 0.8105}
on_release:
self.text = "LP: " + root.ids.lifepoint.text
'''))
产量