2016-11-05 38 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