[英]Kivy: How to add buttons to StackLayout from a list
我想使用['btn1', 'btn2','btn3']
类的值列表在我的布局上动态创建按钮。 之后,我想在按下时捕获按钮的名称,但我被困在添加按钮步骤请帮助这是我的main.py
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.lang import Builder
from kivy.core.window import Window
from kivy.uix.button import Button
Builder.load_file('design.kv')
class MyLayout(Widget):
btns = ['btn1', 'btn2','btn3']
for i in btns:
self.add_widget(Button(text = i))
class MyApp(App):
def build(self):
return MyLayout()
if __name__ == "__main__":
MyApp().run()
这是我的design.kv
文件
<MyButton@Button>:
font_size: 24
size_hint: [.50, None]
height: 60
<MyLayout>
GridLayout:
rows: 2
size: root.width, root.height
Label:
size_hint: 1, None
size: 120 , 120
text: "Welcome"
font_size: 42
rgb: utils.get_color_from_hex('#5ee2e5')
ScrollView:
do_scroll_x: False
do_scroll_y: True
StackLayout:
canvas:
Color:
rgb: utils.get_color_from_hex('#5ee2e5')
Rectangle:
pos: self.pos
size: self.size
cols:1
pos_hint: {'center_x':.5}
size_hint_y: None
spacing: 5
padding: 10
height: self.minimum_height
top: self.height
MyButton:
text: "Btn1"
您可以通过在kv
中为StackLayout
添加一个id
来做到这一点:
StackLayout:
id: stack
然后在MyLayout
class 中添加一个方法来添加Buttons
,并在MyApp
class 中调用该方法:
class MyLayout(Widget):
def add_butts(self, dt):
btns = ['btn1', 'btn2', 'btn3']
for i in btns:
self.ids.stack.add_widget(Button(text=i, size_hint=(None, None), size=(100, 60)))
class MyApp(App):
def build(self):
ml = MyLayout()
Clock.schedule_once(ml.add_butts)
return ml
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.