2016-10-23 1 views
1

Je veux utiliser la dispersion de kivy afin de redimensionner les widgets que la dispersion contient. Donc, j'ai créé box_total contenu dans scatter, contenue dans floatlayout.redimensionner le widget dans kivy scatter

Voici le code:

from kivy.app import App 

from kivy.uix.scatter import Scatter 
from kivy.uix.label import Label 
from kivy.uix.floatlayout import FloatLayout 
from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.button import Button 

class TutorialApp(App): 
    def build(self): 
     b = BoxLayout(orientation='vertical') 
     button = Button(text = 'something') 
     b.add_widget(button) 


     box_labels = BoxLayout(orientation = 'horizontal') 
     label1 = Label(text = 'hello') 
     box_labels.add_widget(label1) 
     label2 = Label(text = 'world') 
     box_labels.add_widget(label2) 

     box_buttons = BoxLayout(orientation = 'horizontal') 
     button1 = Button(text = 'hello') 
     box_buttons.add_widget(button1) 
     button2 = Button(text = 'world') 
     box_buttons.add_widget(button2) 

     box_total = BoxLayout(orientation = 'vertical') 
     box_total.add_widget(box_labels) 
     box_total.add_widget(box_buttons) 


     f = FloatLayout() 
     s = Scatter() 
     f.add_widget(s)   
     s.add_widget(box_total) 
     b.add_widget(f) 

     return b 

if __name__ == "__main__": 
    TutorialApp().run() 

et c'est ce que je reçois:

enter image description here

Comment puis-je redimensionner le widget intérieur box_total pour occuper toute la zone FloatLayout? (la moitié inférieure de la fenêtre)

Répondre

1

Scatter n'est pas une mise en page, par conséquent, le réglage automatique de la position ne fonctionnera pas ici. Utilisez ScatterLayout pour se comporter comme un Scatter et un FloatLayout.

from kivy.uix.scatterlayout import ScatterLayout 
ScatterLayout() 

Ou faire manuellement avec le réglage des positions des widgets à l'intérieur du FloatLayout, mais rappelez-vous que vous aurez besoin de faire size_hint=(None, None) premier.