2017-02-26 135 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() 
相關問題