如何在kivyMD的MDToolbar中更改图标的颜色?

3
我想改变MDToolbar左侧操作项图标的颜色。默认是白色,现在我想把它改成红色。最简单的方法是什么?我已经尝试了几乎所有方法(text_color、bg_color等),但都没有成功。
4个回答

1
使用specific_text_color:1,0,1,1可以更改工具栏内文本的颜色。它会同时更改文本和图标的颜色。我不知道如何仅更改图标的颜色。也许这可以帮助解决问题。
目前我无法更改OneLineIconListItem的图标颜色。我认为我们遇到了相同的限制?

1

您无法更改工具栏中图标的颜色。


那么如果这是不可能的,我该如何放置自己的自定义图标呢? - WillingLearner
那是另一个问题。 - Xyanight

1
在这种情况下,我建议搜索KivyMD存储库以获取相关的小部件类,然后浏览以查看它是如何被定义的、相关的ID是什么等等。例如,toolbar.py中的这一行似乎定义了工具栏中的图标:
def update_action_bar(self, action_bar, action_bar_items):
    #...
    action_bar.add_widget(
        MDIconButton(
            icon=item[0],
            on_release=item[1],
            opposite_colors=True,
            text_color=self.specific_text_color,
            theme_text_color="Custom",
        )
    )
    #...

在这里,我们了解到工具栏的图标属于MDIconButton类,并且它们有一个text_color颜色属性,似乎是设置颜色的属性。
看一下上面的函数被调用的地方, 我们可以看到这些图标作为小部件添加到self.ids["left_actions"]self.ids["right_actions"]中。
def on_left_action_items(self, instance, value):
    self.update_action_bar(self.ids["left_actions"], value)

def on_right_action_items(self, instance, value):
    self.update_action_bar(self.ids["right_actions"], value)

了解了这些,现在在我们自己的代码中,比如在MainAppbuild()函数中,我们可以访问和修改该属性:
def build(self):
    # ... 
        
    # get the root widget
    self.root = root = Builder.load_file('root.kv')

    # get toolbar
    toolbar=root.ids.toolbar
    
    # get the icons on the right
    action_items = toolbar.ids.right_actions.children

    # loop over the icons
    for item in action_items:
        # change the color
        item.text_color=(1,0,0,1) # red

这段代码不需要放在build()函数里,只需要放在可以通过ID访问工具栏小部件的某个位置即可。

0

同时使用md_bg_color: app.theme_cls.primary_colortext_color: rgba('#F0F0F0')让我能够改变MDToolbar中图标按钮的颜色。


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