获取意外背景的操作

2024-09-28 03:16:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我在kv中为Button类制定了一个规则,使其具有特定的背景(在图像中提供)。当我创建一个包含ActionPreviousActionButton小部件的ActionBar时,它们的背景似乎都相同。
我可以理解ActionButton实例得到了这个背景,因为它继承了ButtonActionItem类,但是为什么ActionPrevious得到了相同的背景呢?它继承自BoxLayoutActionItem,两者都与Button类无关。背后的原因是什么

还有一个附带问题
ActionPrevious有一个属性with_previous,当设置为True时,它会添加一个可单击的箭头。但是,小部件的标题仍然不可点击。但是文档说这个属性会使整个小部件可以点击。虽然这没什么大不了的,但我还是希望整个ActionPrevious小部件的背景在媒体上有所改变。有可能做到这一点吗?
所以我的意思是,当你按下后退箭头,只有它周围的空间和应用程序图标变成蓝色,但文本没有,好像它是一个不同的小部件的一部分

下面是将问题可视化的代码:

from kivy.base import runTouchApp
from kivy.lang import Builder
from kivy.uix.actionbar import ActionBar

Builder.load_string('''
<Button>:
    background_normal: 'some_file.png'

<MenuBar>:
    ActionView:
        ActionPrevious:
            title: "Log out"
            with_previous: True
        ActionButton:
            text: "Settings"
''')
class MenuBar(ActionBar):
    pass

runTouchApp(MenuBar())

Tags: fromimporttrue属性部件withbutton背景
1条回答
网友
1楼 · 发布于 2024-09-28 03:16:55

好吧,真相就在style.kv文件里。基本上,ActionPrevious小部件具有以下结构:

<ActionPrevious>:
    GridLayout:
        ActionPreviousButton:
            GridLayout:
                ActionPreviousImage:
                    id: prev_icon_image  # the "back" arrow
                ActionPreviousImage:
                    id: app_icon_image   # the app icon
                Widget:
                    # perhaps something to split the title from the GridLayout
    Label:
        id: title                        # the title 

ActionPreviousButton继承自Button,这就是为什么ActionPrevious箭头部分得到了这个背景

这里还有一个附带问题的答案。因为可点击部分是ActionPreviousButton,而标题保存在Label中,而不是它的子项,所以文本是不可点击的。所以要解决这个问题,必须创建一个自定义类并将Label作为ActionPreviousButton的子类

相关问题 更多 >

    热门问题