簡體   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