2017-02-27 2 views
0

Wie kann ich die ImageButtons in MainPage zu SPage hinzufügen?Schaltfläche zu einem anderen Bildschirm hinzufügen, wenn gedrückt ... kivy

zum Beispiel:

class MainPage(Screen): 
    def openmain(self, *args): 
     self.stop = ImageButton(source= 'stop.png', allow_stretch= True, pos= (390, 300), size_hint= (.2,.1)) 
     self.stop.bind(on_release=self.addstop) 
     self.add_widget(self.stop) 
     #btn2 
     #btn3 
     #btn4 

class SPage(Screen): 
    def buttonsbox(self, *args): 
     for x in xrange(4): ####how do I use choice(random) 
      self.btnsbox = BoxLayout(orientation= 'vertical') 
      self.add_widget(self.btnsbox) 

Ich versuche, die Tasten zufällig „btnsbox“ in spage nach dem man gedrückt wird hinzuzufügen ... wäre so etwas wie ein Schalter funktionieren? Jede Art von Eingabe würde helfen, ich bin bereit zu lernen. Vielen Dank!

Antwort

1

Ich würde die neuen Schaltflächen zu einer Liste hinzufügen und die zufällige Shuffle verwenden, um sie zu mischen. Dann lösche das Boxlayout auf dem zweiten Bildschirm und schiebe durch die Liste, um sie an das Boxlayout anzuhängen.
Versuchen Sie dieses Beispiel:

from kivy.app import App 
from kivy.uix.screenmanager import ScreenManager 
from kivy.lang import Builder 
from kivy.properties import ListProperty, ObjectProperty 
from random import shuffle 



Builder.load_string(''' 

#: import Button kivy.uix.button.Button 

<MyScreenManager>: 
    box2: box2 
    Screen: 
     name: "screen1" 
     BoxLayout: 
      orientation: "vertical" 
      Button: 
       text: "Button 1" 
       on_release: 
        root.added_buttons.append(Button(text="Button 1")) 
      Button: 
       text: "Button 2" 
       on_release: 
        root.added_buttons.append(Button(text="Button 2")) 
      Button: 
       text: "Button 3" 
       on_release: 
        root.added_buttons.append(Button(text="Button 3")) 
      Button: 
       text: "Goto screen 2" 
       on_release: root.current = "screen2" 

    Screen: 
     name: "screen2" 
     on_enter: root.update_buttons() 
     BoxLayout: 
      orientation: "vertical" 
      BoxLayout: 
       orientation: "vertical" 
       id: box2 
      Button: 
       text: "Goto screen 1" 
       on_release: 
        root.current = "screen1" 

''') 



class MyScreenManager(ScreenManager): 

    box2 = ObjectProperty(None) 
    added_buttons = ListProperty([]) 


    def update_buttons(self,*args): 

     self.box2.clear_widgets() 
     shuffle(self.added_buttons) 
     for i in self.added_buttons: 
      self.box2.add_widget(i) 
     self.added_buttons[:] = [] 



class MyApp(App): 

    def build(self): 

     return MyScreenManager() 



MyApp().run() 
+0

Das ist genial! danke, ich beendete die Verwendung eines Stacklayouts und fügte eine Schaltfläche für clear_widgets hinzu. Wirklich danke dir! und kannst du mir helfen herauszufinden, warum [dies] (http://stackoverflow.com/questions/42474953/kivy-sound-volume-python) nicht funktioniert. –

Verwandte Themen