更改 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 自定义按钮类中的文本的主要内容,如果未能解决你的问题,请参考以下文章