2017-02-26 4 views
0

In dem folgenden Code, wenn ich auf das Etikett klicke, verschwindet die Menüschaltfläche vom Bildschirm. Wie kann ich das lösen?Wenn ich auf ein Etikett klicke, verschwindet die Menüschaltfläche

Ich versuche dies auf Windows 10, mit Kivy 1.9.2dev.

Der Code erstellt nur einen Screenmanager und fügt dann zwei Bildschirme hinzu. Fügt dann ein vertikales und ein horizontales Boxlayout hinzu.

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() 

Antwort

0

Das Problem hier ist, dass Sie DropDown in Ihren Klassen erben. Und Sie erstellen ein weiteres DropDown in dieser Klasse in kvlang.
Versuchen Sie stattdessen, BoxLayout zu erben. Dies sollte Ihr Problem beheben.
Gefällt mir:

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() 
Verwandte Themen