[英]Update Label based on dynamic buttons clicked on Stack Layout in Python and Kivy
我正在尝试根据在堆栈布局中单击的动态按钮更新标签中的文本。 这是我的 main.py 代码:
kivy.require('2.1.0')
from kivy.app import App
from kivy.metrics import dp
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.stacklayout import StackLayout
class SPKList(StackLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
for i in range(0, 500):
width = dp(250)
height = dp(150)
b = Button (
text=str(i+1),
size_hint=(None,None),
size=(width,height),
font_size=dp(20)
)
self.add_widget(b)
class MainFrame(BoxLayout):
pass
class SPKMonitorApp(App):
pass
SPKMonitorApp().run()
这是 SPKMonitor.kv 代码:
#:kivy 2.1.0
MainFrame:
<MainFrame@BoxLayout>:
orientation: "vertical"
Label:
id:room1
text:"This is Free Space"
size_hint: 1, .3
font_size: "20dp"
BoxLayout:
orientation:"horizontal"
BoxLayout:
orientation: "vertical"
size_hint: .4, 1
Label:
id:room2
text:"This is Free Space"
font_size: "20dp"
Button:
id:submitButton
text:"SUBMIT"
size_hint: 1, .2
font_size: "20dp"
SPKFieldView:
<SPKDetailView@BoxLayout>:
orientation: "vertical"
Label:
text: "No. SPK"
BoxLayout:
orientation: "horizontal"
<SPKFieldView@ScrollView>:
SPKList:
size_hint: 1, None
height: self.minimum_height
<SPKList>:
请帮我将 ID: room2标签中的文本更新为我在右侧按钮中单击的任何数字(堆栈布局)
您可以添加一个由Button
触发的方法,它可以满足您的需求。 只需稍微修改您的SPKList
:
class SPKList(StackLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
for i in range(0, 500):
width = dp(250)
height = dp(150)
b = Button (
text=str(i+1),
size_hint=(None,None),
size=(width,height),
font_size=dp(20),
on_release=self.do_button # added
)
self.add_widget(b)
def do_button(self, button):
# set the text of the Label
App.get_running_app().root.ids.room1.text = button.text
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.