2017-02-26 118 views
0

在下面的代码中,当我点击标签时,菜单按钮从屏幕上消失。我该如何解决这个问题?当我点击一个标签时,菜单按钮消失

我试试在Windows 10上使用kivy 1.9.2dev。

代码只是创建一个屏幕管理器,然后添加两个屏幕。然后添加一个垂直和水平的盒子布局。

from kivy.app import App 
from kivy.uix.screenmanager import ScreenManager, Screen 
from kivy.uix.dropdown import DropDown 
from kivy.lang import Builder 

Builder.load_string(''' 
<TheScreenManager>: 
    Screen1: 

<Screen1>: 
    name: 'screen1' 
    BoxLayout: 
     orientation: 'vertical' 
     BoxLayout: # Menu 
      size_hint_y: None 
      orientation: 'horizontal' 
      height: 48 

      DropDown1: 


     Label: 
      id: label 
      text: 'I am a label' 
      font_size: 30 
      size_hint_y: 0.99 


<DropDown1>: 
    Button: 
     id:btn1 
     text: 'btn1' 
     on_release: dropdown1.open(self) 
     size_hint_y: None 
     height: '48dp' 

    DropDown: 
     id: dropdown1 
     on_parent: self.dismiss() 
     on_select: btn1.text = '{}'.format(args[1]) 

     Button: 
      text: 'My first Item' 
      size_hint_y: None 
      height: 44 
      on_release: dropdown1.select('item1') 


''') 


class Screen1(Screen): 
    pass 


class DropDown1(DropDown): 
    pass 

class DropDown2(DropDown): 
    pass 


class EraserDropDown(DropDown): 
    pass 


class Screen2(Screen): 
    pass 


class TheScreenManager(ScreenManager): 
    pass 


class TheApp(App): 
    def build(self): 
     return TheScreenManager() 


TheApp().run() 

回答

0

这里的问题是,你在类中继承DropDown。你在kvlang中创建另一个DropDown类。
尝试继承BoxLayout。这应该可以解决您的问题。
喜欢这个:

from kivy.app import App 
from kivy.uix.screenmanager import ScreenManager, Screen 
from kivy.lang import Builder 
from kivy.uix.boxlayout import BoxLayout 

Builder.load_string(''' 
<TheScreenManager>: 
    Screen1: 

<Screen1>: 
    name: 'screen1' 
    BoxLayout: 
     orientation: 'vertical' 
     BoxLayout: # Menu 
      size_hint_y: None 
      orientation: 'horizontal' 
      height: 48 

      DropDown1: 


     Label: 
      id: label 
      text: 'I am a label' 
      font_size: 30 
      size_hint_y: 0.99 


<DropDown1>: 
    Button: 
     id:btn1 
     text: 'btn1' 
     on_release: dropdown1.open(self) 
     size_hint_y: None 
     height: '48dp' 

    DropDown: 
     id: dropdown1 
     on_parent: self.dismiss() 
     on_select: btn1.text = '{}'.format(args[1]) 

     Button: 
      text: 'My first Item' 
      size_hint_y: None 
      height: 44 
      on_release: dropdown1.select('item1') 


''') 


class Screen1(Screen): 
    pass 


class DropDown1(BoxLayout): 
    pass 

class Screen2(Screen): 
    pass 


class TheScreenManager(ScreenManager): 
    pass 


class TheApp(App): 
    def build(self): 
     return TheScreenManager() 


TheApp().run() 
相关问题