繁体   English   中英

Python Kivy:如何在循环中添加多个小部件

[英]Python Kivy: How to add multiple widgets in a loop

我相对来说是Python的新手,而对于Kivy则是新手,所以我正在努力解决一个简单的任务。 我需要一个带有两个按钮的主屏幕:Button1和Button2。 当我按下一个按钮时,第二个屏幕应该出现,再次显示按钮的数量。 第二个屏幕上的按钮数量是动态的,但为简单起见,我们可以假定我们知道它。

python代码:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout

buttons = {}
buttons['Button 1'] = ('A Button 1', 'A Button 2')
buttons['Button 2'] = ('B Button 1', 'B Button 2', 'B Button 3')

class SelectButton(BoxLayout):

    def show_buttons(self, button):

        self.clear_widgets() # I guess I need this

        #Here question comes: how to add button widgets buttons[button]?
        #Shall I do this in the loop in Python code or in .kv file?
        #for item in buttons[button]:
        #    print (item)

class TestApp(App):
    pass

if __name__ == '__main__':
    TestApp().run()

.kv文件:

SelectButton:

<SelectButton>:
    orientation: "vertical"
    Label:
        size_hint_y: 0.15
        text: "Select Button"
    BoxLayout:
        Button:
            text: "Button 1"
            on_press: root.show_buttons(self.text)
        Button:
            text: "Button 2"
            on_press: root.show_buttons(self.text)

如果它确实是动态的,那么您应该在python中进行。

def show_buttons(self, button):

    self.clear_widgets() # I guess I need this


    for item in buttons[button]:
        self.add_widget(Button(text=item))

如果不是那么动态 ,我建议创建更多的屏幕 ,并在使用ScreenManager按下第一个按钮之一时切换到它们

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM