更改 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 以反映实际使用的缩进。 RelativeLayoutRoundedButton 的一部分吗? 是的,我在文本编辑器中遇到了这个问题。我粘贴了带有完整缩进的代码,但这并没有复制过来。然后我无法添加其他选项卡来更正它。你知道我是怎么做到的吗? 【参考方案1】:

您可以像调整其他任何Button 一样调整RoundedButton 的文本:

RoundedButton:
    text: 'Hello'

【讨论】:

谢谢约翰,我试过了,但它在我添加的标签上添加了额外的文本。我想我要做的是改变类所以没有标签,我只是修改文本属性。我也使用了自定义标签类(使用特定字体等来阻止我重复代码,但我没有在问题中包含该细节)出于兴趣,有没有办法专门更改标签的文本?还是不应该这样做 仍然不清楚您要做什么。 Button 类具有它显示的 text 属性。您的RoundedButton 扩展了Button,因此它也有它自己的text 属性来显示。您添加的Label 小部件只是另一个Label,与RoundedButton 无关,它显示在RoundedButton 之上。尝试将我的答案添加到您的 kv 并消除多余的 Label 以了解我的意思。 你说得对,我忽略了我是从 Button 继承的。我对此很陌生,标签是多余的。我会相应地更改课程

以上是关于更改 Kivy 自定义按钮类中的文本的主要内容,如果未能解决你的问题,请参考以下文章

当按钮是iOS中自定义单元格的子视图时,如何动态更改按钮文本?

如何使用 KV 语言在 Kivy 中制作自定义按钮?

选择时自定义按钮不更改文本颜色

在自定义适配器类中发送服务器请求后,如何更改 Listview 按钮名称?

如何通过单击功能区按钮将文本设置到自定义任务窗格中的文本框?

从自定义适配器获取片段中的 UI 元素 ID