我在kv中为Button
类制定了一个规则,使其具有特定的背景(在图像中提供)。当我创建一个包含ActionPrevious
和ActionButton
小部件的ActionBar
时,它们的背景似乎都相同。
我可以理解ActionButton
实例得到了这个背景,因为它继承了Button
和ActionItem
类,但是为什么ActionPrevious
得到了相同的背景呢?它继承自BoxLayout
和ActionItem
,两者都与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())
好吧,真相就在
style.kv
文件里。基本上,ActionPrevious
小部件具有以下结构:而
ActionPreviousButton
继承自Button
,这就是为什么ActionPrevious
箭头部分得到了这个背景这里还有一个附带问题的答案。因为可点击部分是
ActionPreviousButton
,而标题保存在Label
中,而不是它的子项,所以文本是不可点击的。所以要解决这个问题,必须创建一个自定义类并将Label
作为ActionPreviousButton
的子类相关问题 更多 >
编程相关推荐