簡體   English   中英

如何在屏幕上更新標簽的文字 - Kivy

[英]How to update a label's text in a screen - Kivy

我一直在嘗試制作一個程序,不斷更新並顯示從傳感器獲得的讀數。 但是,更新傳感器值后,標簽仍會在后台顯示舊值。 如何在顯示新值之前清除屏幕?

我已經嘗試過self.clear_screen但這並沒有幫助。 我錯過了什么?

.py文件:


class MainScreen(Screen):
   pass



class ScreenThermo(Screen):
    def __init__(self,**kwargs):
        super(ScreenThermo, self).__init__(**kwargs)
        Clock.schedule_interval(self.getTemp, 2)


    def getTemp(self,dt):
        temperature = sensor.get_temperature()
        thetemp = temperature 
        self.manager.screen_thermo.ids.TempLabel.text = str(thetemp)


    def on_enter(self, *args):
        self.__init__()

    pass

class ScreenManagement(ScreenManager):
   pass



.kv文件

ScreenManagement:    
    id: screen_manager
    screen_thermo: screen_thermo
    MainScreen:
    ScreenThermo:
        id: screen_thermo
        name: 'thermo'
        manager: screen_manager

<MainScreen>:
    name: "main"
    Label:
        text: "Welcome to \n Interactive HealthCare \n System"
        font_size: 60
        halign: 'center'
        valign: 'middle'
        pos_hint: {'x': .01, 'y': .05}
        on_touch_down: app.root.current = "thermo"



<ScreenThermo>:
    Label:
        text: "temperature"
        font_size: 60
        text_size: root.width, None
        size: self.texture_size
        halign: 'left'
        valign: 'middle'
    Label:
        id: TempLabel
        text: "temperature updated"
        font_size: 60
        text_size: root.width, None
        size: self.texture_size
        halign: 'center'
        valign: 'middle'

ScreenThermo - 覆蓋的標簽

ScreenThermo顯示2個標簽,但它們被覆蓋或疊加,即一個在后台,另一個在前景。

Soltion

添加BoxLayout以分隔兩個Labels

片段 - kv

<ScreenThermo>:
    BoxLayout:
        Label:
            text: "temperature"
            font_size: 60
            text_size: self.size
            halign: 'left'
            valign: 'middle'
        Label:
            id: TempLabel
            text: "temperature updated"
            font_size: 60
            text_size: self.size
            halign: 'center'
            valign: 'middle'

根本原因 - 標簽仍顯示舊值

正在顯示舊值,因為以下內容創建了一個可以垂直增長但將文本包裝在一定寬度的Label。

Label:
    text_size: root.width, None
    size: self.texture_size

  • 刪除text_size: root.width, Nonesize: self.texture_size
  • 添加text_size: self.size

以下代碼將此大小綁定到Label的大小,因此文本將在小部件邊界內對齊。 這也將自動包裝Label的文本以保留在此區域內。

Label:
    text_size: self.size
    halign: 'right'
    valign: 'middle'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM