2016-06-09 77 views
0

我已經在我的kv中爲Button類制定了一個規則,以具有特定背景(在圖像中提供)。當我創建了包含ActionPreviousActionButton小部件的ActionBar時,它們似乎都具有相同的背景。
我明白ActionButton實例有這樣的背景,因爲它繼承了ButtonActionItem類,但爲什麼ActionPrevious獲得相同的背景?它繼承自BoxLayoutActionItem,這兩者都與Button類沒有任何關係。它背後的原因是什麼?ActionPrevious獲得意想不到的背景

此外,側問題
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()) 

回答

0

好了,事實是在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的子項。