2016-11-05 39 views
0

我在我的應用程序(ScreenManager)中有2 Screens。其中之一有ActionBarActionOverflow。我有按鈕應該改變當前Screen和關閉ActionOverflow,但Screen更改和ActionOverflow保持打開,直到 我在另一個地方點擊屏幕。無法直接關閉ActionOverflow

這裏是一些代碼:

# .kv 
ScreenManager: 
    id: ScrMan 
    Screen: 
     name: 'scr1' 
     BoxLayout: 
      orientation: 'vertical' 
      ActionBar: 
       ActionView: 
        ActionOverflow: 
         id: ActOv 
         #some buttons 
         ActionButton: 
          text: 'some text' 
          on_press: 
           ActOv.is_open = False 
           #I also tried: is_open = False; self.parent.is_open = False; with the same result 
           ScrMan.current = 'scr2' 

    Screen: 
     name: 'scr2' 
     #some cool stuff here 

我怎樣才能改變屏幕和接近ActionOverflow列表?

回答

1

編輯:正如您具有版本1.9.1(或以上的主分支,有this修復丟失更改actionbar.py<python dir>/Lib/site-packages/kivy/uix/actionbar.py帶來的默認行爲舊版本


下拉應該關閉的。 。它自己默認也許有一些錯誤代碼如將ActionButtonActionOverflow作爲一個widget或者也許別的試試這個:

from kivy.lang import Builder 
from kivy.base import runTouchApp 
from kivy.uix.boxlayout import BoxLayout 
Builder.load_string(''' 
#:import Clock kivy.clock.Clock 
#:import partial functools.partial 
<Test>: 
    ScreenManager: 
     id: ScrMan 
     Screen: 
      name: 'scr1' 
      ActionBar: 
       pos_hint: {'top': 1} 
       ActionView: 
        ActionPrevious: 
        ActionOverflow: 
        ActionButton: 
         text: 'some very very long text' 
        ActionButton: 
         text: 'some very very long text' 
        ActionButton: 
         text: 'some very very long text' 
        ActionButton: 
         text: 'some very very long text' 
        ActionButton: 
         text: 'some very very long text' 
        ActionButton: 
         text: 'try this button!' 
         on_press: 
          ScrMan.current = 'scr2' 
          Clock.schedule_once(partial(root.change_scr, ScrMan), 1) 
     Screen: 
      name: 'scr2' 
      Label: 
       text: 'second' 
''') 
class Test(BoxLayout): 
    def change_scr(self, man, *dt): 
     man.current = man.previous() 
runTouchApp(Test()) 
+0

Unfortunantely,您的解決方案沒有helpend。 第一:你的'非常非常長的字符串'不適合按鈕,我修正了這個加入'minimum_width:'200sp'' 第二:當我按下按鈕時,屏幕變成第二個並返回。在這個 – Fogapod

+0

期間''ActionOverflow'仍然是開放的你有1.9.1版本(或者老版本的主分支,把[this](https://github.com/kivy/kivy/commit/275cb51b2015685998cf87c2877239c270b20af2#diff-4b5fa03b170bae63a329314d2bab8866R263)修復到你的'actionbar .py' in'/Lib/site-packages/kivy/uix/actionbar.py' – KeyWeeUsr

+1

是的,我在電腦上有1.9.1和在平板電腦上有1.9.0(qpy)這個修復使我在PC上得到幫助 – Fogapod