2017-02-26 11 views
0

次のコードで、ラベル上のをクリックすると、メニューボタンが画面から消えます。これをどうすれば解決できますか?ラベルをクリックすると、メニューボタンが消えます

私はkivy 1.9.2devを使用してWindows 10でこれを試しています。

コードではスクリーンマネージャーが作成され、2つの画面が追加されます。次に、縦と横のボックスレイアウトを追加します。

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() 
関連する問題