繁体   English   中英

基于在 Python 和 Kivy 中的 Stack Layout 上单击的动态按钮更新标签

[英]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.

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