2017-02-27 18 views
0

メインページの画像ボタンをSPageに追加する方法を教えてください。例えばボタンを押したときに別の画面にボタンを追加する... kivy

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) 

は、私は、スイッチの仕事のようなものが...押されたかに記載SPageにランダムに「btnsbox」にボタンを追加するでしょうしようとしていますか?どんなタイプの入力であれ、私は喜んで学ぶことができます。ありがとうございました!

答えて

1

新しいボタンをリストに追加し、ランダムのシャッフルを使用してシャッフルします。次に、2番目の画面でboxlayoutをクリアし、リストをループしてboxlayoutに追加します。
この例を試してみてください:

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

これはすばらしいです!ありがとう、私はスタックレイアウトを使用して終了し、clear_widgetsのボタンを追加しました。本当にありがとう!私はなぜ[this](http://stackoverflow.com/questions/42474953/kivy-sound-volume-python)が動作しないのか理解できますか? –

関連する問題