【问题标题】:ActionPrevious getting an unexpected backgroundActionPrevious 获得意想不到的背景
【发布时间】:2016-06-09 11:15:18
【问题描述】:

我在我的 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())

【问题讨论】:

    标签: python python-3.x kivy


    【解决方案1】:

    好的,所以真相在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 的子级。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多