【发布时间】:2020-12-03 20:41:50
【问题描述】:
我想我已经准备好解决所有类似的问题,但无法解决这个问题。
我正在尝试通过 python 函数更新在 .kv 文件中定义的标签。 我要更新的标签是 lbl_autohours
我已经尝试过 StringProperty,如下所示,直接引用 (self.ids.lbl_autohours.text = "test123"),如果我通过单击按钮调用它,它就可以工作。但是一旦收到一些数据,我想从 .py-script 调用它。我无法让它工作。
...
# Welcome screen
class WelcomeScreen(Screen):
def __init__(self, **kwargs):
super().__init__(**kwargs)
Clock.schedule_once(self.updateInputField, 0.1)
...
def loadTimeseries(self, assetToShow, aspect):
timeseries = get_timeseries(clientid, clientsecret, payload, assetToShow, aspect, latestValue="true")
print("Done")
mainApp.current = 'scr_177'
screen_177.showData(timeseries)
...
class Screen_177(Screen):
lbl_autohours = StringProperty()
def __init__(self, **kwargs):
super(Screen_177, self).__init__(**kwargs)
self.lbl_autohours="123" #Works
def showData(self, timeseries):
print("Running showData")
print(timeseries[0]['Auto_hours'])
self.lbl_autohours = "test123" #Doesnt work
...
mainApp = Builder.load_file("alogconn.kv")
# Main app
class myApp(App):
def build(self):
return mainApp
# Run main program
if __name__ == "__main__":
Window.clearcolor = (1, 1, 1, 1)
screen_177 = Screen_177()
my_app = myApp()
my_app.run()
...
.KV 文件:
ScreenManagement:
id: screen_manager
transition: WipeTransition(clearcolor=(1,1,1,1))
welcomeScreen: scr_welcome
loadingScreen: scr_loading
screen177: scr_177
WelcomeScreen:
id: scr_welcome
LoadingScreen:
id: scr_loading
Screen_177:
id: scr_177
...
<Screen_177>:
clearcolor: (1,1,1,1)
name: 'scr_177'
Image:
source: 'logo.png'
size_hint: 0.5, 0.5
pos_hint: {"center_x":0.5, "top":1}
Label:
text: '177'
font_size: 30
size_hint: 1, 0.2
pos_hint: {"center_x":0.5, "top":0.5}
GridLayout:
cols: 2
id: data_grid
Label:
text: "Auto hours:"
Label:
id: lbl_autohours
text: root.lbl_autohours
...
【问题讨论】:
标签: python kivy label kivy-language