如何在Kivy中更改按钮的背景颜色?

3

我正在尝试构建一个简单的应用程序,每次点击我在Kivy中构建的按钮时播放音乐。由于默认颜色只是普通的灰色,我想添加图形和样式。如何将那个颜色更改为红色?我已经尝试实现background_color参数,但那并没有改变任何东西。以下是我的代码:

   <Test>:
      do_default_tab: False
      Widget:
         canvas.before:
            Rectangle:
                size: self.size
                pos: self.pos


     TabbedPanelItem:

         text: 'Opera'

         text_size: self.size


         BoxLayout:
            orientation: 'vertical'
            padding: 20
            spacing: 10

            Button:

               text: 'Nessun Dorma'
               text_size: self.size
               on_press: root.nessun_dorma()


               halign: 'center'
               valign: 'middle'

               font_size: 20
2个回答

11
您可以使用state和background_color来实现所需的行为。
<FunkyButton>:
     background_color: (1,0,0,1) if self.state == 'normal' else (0,1,0,1)
     background_normal: ""
     #background_down: "" #optional if you want your color pressed 

颜色不变...

这样按钮在未被按下时会是红色,而在被按下时会是绿色...


这看起来是一个不错的解决方案,但当我尝试时:     background_color: (0,0,0,1) if self.state =='normal' else (1,1,1,1)在按钮按下时,我得到了一种青色而不是白色。 - RufusVS
@RufusVS - 尝试添加 background_down: ""。 - Yoav Glazner

2

一种方法是使用图片。外部创建这些图片,并根据状态加载其中一个:

ToggleButton:
    id: 'enableBtn'
    text: 'Enable'
    state: 'normal'
    background_normal: 'enable.png'
    background_down: 'disable.png'
    on_release: root.on_disable() 

我也发现这篇文章非常有用,因为它还解释了如何改变按钮的形状。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接