更改 Kivy 自定义按钮类中的文本
Posted
技术标签:
【中文标题】更改 Kivy 自定义按钮类中的文本【英文标题】:Changing text in Kivy custom button class 【发布时间】:2021-03-15 10:01:50 【问题描述】:按照here 的代码,我创建了一个带有圆角的简单按钮,如下所示:
<RoundedButton@Button>:
background_color: 0,0,1,0
canvas.before:
Color:
rgba: (.216,.118,.329,1) if self.state=='normal' else (0,.7,.7,1)
RoundedRectangle:
pos: self.pos
size: self.size
radius: [10,]
RelativeLayout:
pos: self.parent.pos
size: self.parent.size
Label:
text: 'Button Text'
font_size: 20
pos_hint: 'center_x': 0.5,'center_y':0.5
id: _labeltext
当我在我的 kv 代码中使用此按钮时,我想要一种简单的方法来更改按钮的文本,我想使用 id 值“_labeltext”来完成。 这似乎应该很简单,但我无法找到如何在 KV 代码中而不是在 python 中更改它(作为对操作的响应)。我只想用不同的文本多次重复使用我的按钮设计。例如(我知道这不起作用):
RoundedButton:
self.ids._labeltext.text: 'New Button Text'
谢谢
附:无法在编辑器中正确缩进,抱歉
【问题讨论】:
kv
中的缩进不正确。请调整您发布的kv
以反映实际使用的缩进。 RelativeLayout
是 RoundedButton
的一部分吗?
是的,我在文本编辑器中遇到了这个问题。我粘贴了带有完整缩进的代码,但这并没有复制过来。然后我无法添加其他选项卡来更正它。你知道我是怎么做到的吗?
【参考方案1】:
您可以像调整其他任何Button
一样调整RoundedButton
的文本:
RoundedButton:
text: 'Hello'
【讨论】:
谢谢约翰,我试过了,但它在我添加的标签上添加了额外的文本。我想我要做的是改变类所以没有标签,我只是修改文本属性。我也使用了自定义标签类(使用特定字体等来阻止我重复代码,但我没有在问题中包含该细节)出于兴趣,有没有办法专门更改标签的文本?还是不应该这样做 仍然不清楚您要做什么。Button
类具有它显示的 text
属性。您的RoundedButton
扩展了Button
,因此它也有它自己的text
属性来显示。您添加的Label
小部件只是另一个Label
,与RoundedButton
无关,它显示在RoundedButton
之上。尝试将我的答案添加到您的 kv
并消除多余的 Label
以了解我的意思。
你说得对,我忽略了我是从 Button 继承的。我对此很陌生,标签是多余的。我会相应地更改课程以上是关于更改 Kivy 自定义按钮类中的文本的主要内容,如果未能解决你的问题,请参考以下文章
当按钮是iOS中自定义单元格的子视图时,如何动态更改按钮文本?
在自定义适配器类中发送服务器请求后,如何更改 Listview 按钮名称?